Модераторы: skyboy

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MySQL - индексы - ORDER BY, И снова он, ман не помогает 
:(
    Опции темы
sergejzr
Дата 27.9.2006, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 1
Всего: 360



В запросах используется всегда один индех на таблицу. Этому меня умная книжка научила. Если делаешь JOIN то индех считай уже ушёл на составление таблиц. Советуют пользоваться двойными индексами, вот только пока не разбирался, но положительных результатов пока не было...


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
-=Ustas=-
Дата 27.9.2006, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 4
Всего: 69



Цитата(sergejzr @  27.9.2006,  17:51 Найти цитируемый пост)
В запросах используется всегда один индех на таблицу.

Хм... странно вообще-то. Но индексы, поля котороых присутствуют в условии WHERE, ведь там он используется вместе?! Или я опять ошибаюсь....


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
skyboy
Дата 27.9.2006, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



Цитата(-=Ustas=- @  27.9.2006,  18:32 Найти цитируемый пост)
Но индексы, поля котороых присутствуют в условии WHERE, ведь там он используется вместе?! Или я опять ошибаюсь.... 

в смысле? никто ж не говорит, что индексы могут быть только "однопольные" - индекс может распространяться на несколько полей. Но применяться будет только один индекс. и странного я не вижу: как можно несколько индексов одновременно использовать? я не представляю smile
PM MAIL   Вверх
-=Ustas=-
Дата 27.9.2006, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 4
Всего: 69



Цитата(skyboy @  27.9.2006,  19:50 Найти цитируемый пост)
как можно несколько индексов одновременно использовать? я не представляю smile

Хорошо. Допустим, банальный пример из выше-приведенной таблицы. Если использовать множественный индекс по правостороннему принципу (по-моему так правильно назыввается smile ), т.е.:
Код

CREATE INDEX `all` ON test(pid,active,sort);

То тогда все пучком, запрос, типа
Код

SELECT * FROM test WHERE pid = 5 AND active = 'Y' ORDER BY sort;

Выполняется ИДЕАЛЬНО, с использованием этих трех индексов, Using filesort нету, и правильно. Но... тогда что получается, если мне нужен другой запрос, типа:
Код

SELECT * FROM test WHERE sort > 0 AND active = 'Y' ORDER BY pid; /*Правосторонний порядок индекса уже нарушен*/

То я должен для этого запроса создавать отдельный множественный индекс??? Т.к. уже индекс all не используется на данный запрос. Неужели все-таки нужно создавать каждые индексы на какие-нить индивидуальные запросы? Тогда и места на диске не напасешься smile


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
skyboy
Дата 27.9.2006, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



Цитата(-=Ustas=- @  27.9.2006,  19:21 Найти цитируемый пост)
Выполняется ИДЕАЛЬНО, с использованием этих трех индексов,

нету там трех индексов. ну, если принимать в расчет только 
Код

SELECT * FROM test WHERE pid = 5 AND active = 'Y' ORDER BY sort;

и не надо "на все случаи жизни". при нормализации по 5 НФ вообще можно обойтись только индексом на поле первичного ключа smile Только это уже слишком, даже в общем случае... 
PM MAIL   Вверх
-=Ustas=-
Дата 28.9.2006, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 4
Всего: 69



Цитата(skyboy @  27.9.2006,  21:33 Найти цитируемый пост)
и не надо "на все случаи жизни". при нормализации по 5 НФ

Т.е.? 5 НФ?

Цитата(skyboy @  27.9.2006,  21:33 Найти цитируемый пост)
вообще можно обойтись только индексом на поле первичного ключа

Да ну, не думаю что это будет оптимально smile


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
skyboy
Дата 28.9.2006, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



Цитата(-=Ustas=- @  28.9.2006,  08:10 Найти цитируемый пост)
Т.е.? 5 НФ?

может, я чего и придумал smile однако я именно так по пояснениям преподавателя представил себе 5 нормальную форму smile
PM MAIL   Вверх
Ignat
Дата 28.9.2006, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 21
Всего: 73



На практике применяются, обычно, первые три нормальные формы. Пятая все же крайне нормализованная smile


--------------------
Теперь при чем :P
PM   Вверх
skyboy
Дата 28.9.2006, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



Ignat, зато и в самом деле - более одного индекса на таблицу понадобиться просто не может smile
PM MAIL   Вверх
-=Ustas=-
Дата 28.9.2006, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 4
Всего: 69



Цитата(Ignat @  28.9.2006,  16:34 Найти цитируемый пост)
На практике применяются, обычно, первые три нормальные формы. Пятая все же крайне нормализованная

Какие еще формы? Пятая, третья.... Что то я вас, ребята, не понимаю smile
Цитата(skyboy @  28.9.2006,  16:53 Найти цитируемый пост)
более одного индекса на таблицу понадобиться просто не может

Дык, а если у таблицы связей много...

Добавлено @ 18:45 
Такс, пошел домой книгу изучать.... Хотя главы про индексы уже перечитывал несколько раз.


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Ignat
Дата 28.9.2006, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 21
Всего: 73



Цитата(-=Ustas=- @  28.9.2006,  19:41 Найти цитируемый пост)
Дык, а если у таблицы связей много...

Значит таблица не находится в 5НФ smile


Цитата(-=Ustas=- @  28.9.2006,  19:41 Найти цитируемый пост)
Такс, пошел домой книгу изучать.... Хотя главы про индексы уже перечитывал несколько раз. 

Почитай лучше теорию реляционных БД ;)


--------------------
Теперь при чем :P
PM   Вверх
skyboy
Дата 28.9.2006, 18:58 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



PM MAIL   Вверх
muzer
Дата 28.9.2006, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 387
Регистрация: 31.8.2006

Репутация: 30
Всего: 31



Сколько у вас строк в таблице, что вы так боитесь filesort'а? smile
Когда объём данных переваливает за тот предел, при котором ORDER BY без индекса реально тормозит и исправить это разумным кол-вом индексов нельзя - нужно задуматься о создании избыточности данных, путём хранения в разных таблицах одного и того же в разном разрезе с разными индексами.

sergejzr, как было выяснено несколькими топиками ниже - пятая версия mysql умеет использовать несколько индексов от одной таблицы.

Считаю, нормальные формы нужно знать, чтобы уметь правильно мыслить при проектировании базы данных. Больше нормальные формы ни для чего не нужны, т.е. нельзя их в чистом виде использовать для построения бд.

Это сообщение отредактировал(а) muzer - 28.9.2006, 21:34
PM WWW   Вверх
skyboy
Дата 29.9.2006, 01:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



Цитата(muzer @  28.9.2006,  20:34 Найти цитируемый пост)
Больше нормальные формы ни для чего не нужны, т.е. нельзя их в чистом виде использовать для построения бд.

что понимается под "чистым" видом? насколько часто необходимо идти "вразрез" с первой НФ(насколько я помню - это требование к "атомарности" единицы данных - поля)? 
PM MAIL   Вверх
muzer
Дата 29.9.2006, 01:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 387
Регистрация: 31.8.2006

Репутация: 30
Всего: 31



Цитата(skyboy @  29.9.2006,  02:04 Найти цитируемый пост)
что понимается под "чистым" видом?

Под чистым видом понимается приведение структуры БД строго к какой-либо нормальной форме.
На практике чаще всего есть частичное соответствие той или иной НФ, но т.к. определения НФ не подразумевают частичного соответствия, то я и говорю, что они служат только для развития мышления.

Цитата(skyboy @  29.9.2006,  02:04 Найти цитируемый пост)
насколько часто необходимо идти "вразрез" с первой НФ(насколько я помню - это требование к "атомарности" единицы данных - поля)?  

Хм..приходится. Когда нужно хранить список значений (являющихся праймари в другой таблице) переменной длины без необходимости использовать его в джойнах. Например, данные для загрузки в какую-либо программу. Хранить "вертикально" - очень затратно, большой объём получится, неповоротливая таблица.



Это сообщение отредактировал(а) muzer - 29.9.2006, 01:40
PM WWW   Вверх
Страницы: (4) Все 1 [2] 3 4 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0615 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.