MySQL: Сортировка по первичному ключу или индекс?

Начал оптимизировать базу данных. Подошел к изучению вопроса индексов в 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 в данном случае обязателен?

Заранее спасибо за уделенное время.
  • Вопрос задан
  • 677 просмотров
Решения вопроса 1
@Wol_fi
php, js, mysql, highload
Каждый лист btree индекса содержит в себе значение primary key для конкретного значения. (извините за тавтологию)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы