хотелось бы оптимизировать запросы.. но что-то не могу разобраться как использовать индексы. вот к примеру создала так : [sql]CREATE INDEX i_num ON table (num)[/sql] к примеру надо выбрать первых 10 записей упорядоченных по полю num.. как сформировать запрос? Спасибо[/sql]
База данных сама использует индексы, вам лишь остается в этом убедиться: [sql]EXPLAIN SELECT * FROM table ORDER BY num[/sql]
что-то не выходит.. везде пишет primary.. не хочет мои индексы использовать.. подскажите что непрпавлиьно делаю..
попробовала по-разному сформировать запросы.. в итоге получилось использование индексов при использовании where: [sql]EXPLAIN SELECT * FROM table1 where num>1 ORDER BY num[/sql] что-то так и получается что при использование where задействуются индексы.. ачто делать без where?
Если на num есть индекс и сортировка идёт по этому полю, то MySQL будет использовать дерево индекса, хотя и не скажет об этом в EXPLAIN.
наверное что-то делаю неправильно.. так как по времени выбор данных что с индексом что без - одно и тоже..
AniMEshKa если таблица очень маленькая, то анализатор запросов может решить, что ему быстрее прочитать всю таблицу, чем юзать индекс - так тому и быть... а без where производится полное чтение таблицы. использование индекса, даже если он есть, просто бессмысленно, ибо в любом случае нужно отдавать ВСЕ данные
на самом деле таблица очень большая.. так что и время выборки - существенное значение.. просто я заметила что упорядочиваине идёт по тому полю которе упомянуто в where. а мне хотелось бы получить занчения ограниченные по одним полям а упорядоченные по полю не упомянутому.
AniMEshKa видимо, explain показывает использование индексов только в объединениях. чтобы разрешить сомнения. проведи тест. напиши минимальный скрипт, который делает твою выборку из базы и на этом завершается. удали индекс из базы перейди в подпапку bin каталога апача и запусти ab -n 10000 -c 32 http://url_тестового_скрипта перезапусти апач и субд добавь индекс. повтори процедуру теста. если во втором случае число обработанных запросов в секунду заметно больше - субд использует индекс)
Для сортировки используется само дерево. Т.к. оно уже отсортированное. Просто EXPLAIN об этом не говорит. Легко проверить, если убрать с большой таблицы индекс на поле по которому сортируется.