Начал оптимизировать базу данных. Подошел к изучению вопроса индексов в MySQL.
Как известно, ёмкость запросов определяется командой EXPLAIN.
Есть таблица ID MEMBER VIP
Запрос:
SELECT * FROM vip WHERE member='1'
Команда explain показывает значение rows -
8500. То-есть, чтобы выполнить запрос приходится проверять все строки.
Получается, мне надо установить индекс на поле member и проблема будет решена.
Но! Почему при таком запросе
SELECT * FROM vip WHERE member='1' ORDER BY id DESC LIMIT 0,1
Команда explain показывает значение rows -
1. То-есть, все отлично. Запись нашлась сразу.
ID при этом является ПЕРВИЧНЫМ КЛЮЧОМ, то-есть основным индексом.
Получается, для уникальных значений достаточно всего лишь сортировки поля по первичному ключу?
Для неуникальных, понятно, не подойдет, так как неизвестен LIMIT.
Или все-таки я что-то не так понимаю и индекс на поле member в данном случае обязателен?
Заранее спасибо за уделенное время.