Використання індексів при ’’order by
Розбираюсь з ефективністю виконання запитів. Таблиця res індексована по полю ag, містить записи змінної довжини (серед инших полів, зокрема, є тип text). Версії MySQL: 4.1.22-community-nt, 5.0.51a-community.
explain select ag from res order by ag
Результат: using index
explain select ag, cliens from res order by ag
Результат: using filesort
explain select * from res order by ag
Результат: using filesort
Тобто мені треба вибирати і сортувати по індексу не тільки індексоване поле — а ще й всякі-різні инші. Але запит індексованого поля — сервер сортує по индексу, запити ж більшої кількости полів — вже ні.
Чому індекс використовується в першому випадку, але не використовується в другому і третьому — мені, з загальних міркувань, зрозуміло :-) Але в мануалі не бачу згадки про таке обмеження — то, можливо, воно так чи инакше обходиться? Чи проблеми нема в новій версії MySQL (не люблю, на загал, експериментувати і оновлювати нормально працюючий софт...)
Чи хто що підкаже?
26 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів