Отговаряне на вашите въпроси:
-
Е
possible_keys
индексите, които MySQL може да иска да използва иkeys
индексите, които MySQL всъщност използва? Да, това е правилно. -
Защо е индексът
index_status_mit_spam
не се използва? В заявката колоните имат същия ред като в индекса. SQL използва статистика за индексите на таблицата за да определите кой индекс да използвате. Редът на полетата в оператора select НЯМА ефект на кой индекс да се използва. Статистиката около индексите включва информация като уникалност на индекса и други неща. Вероятно ще се използват повече уникални индекси. Прочетете повече за това тук:http ://dev.mysql.com/doc/innodb/1.1/en/innodb-other-changes-statistics-estimation.html или тук:http://dev.mysql .com/doc/refman/5.0/en//myisam-index-statistics.html . Тези фактори определят как MySQL ще избере един индекс да използвам. Ще използва само ЕДИН индекс . -
Защо е индексът
index_datum
не се използва заORDER BY
? MySQL ще използва само един индекс, а не два по време на заявка, тъй като използването на втори индекс ще забави заявката още повече. Четенето на индекс НЕ е четене на таблицата. Това е свързано с оперативната ефективност на заявката. Ето отговори, които могат да обяснят някои концепции:https://dba.stackexchange.com/questions/18528/performance-difference-between-clustered-and-non-clustered-index/18531#18531 Или Добавянето на клауза за ограничение към MySQL заявката я забавя драстично Или MySQL индекси и кога да се групират тях . Тези отговори съдържат много подробности, които ще ви помогнат да разберете MySQL индексирането. -
Как мога да оптимизирам моите таблица-индекси или заявката? (Заявката по-горе се нуждае от до 3 секунди с около милион записи в таблицата). Е, тук има сортиране на файлове, което вероятно ви забавя. Възможно е таблицата да има твърде много индекси и MySQL избира грешен.
Трябва да разберете, че индексите ускоряват четенето и забавят записването в таблици. Така че просто добавянето на индекси не винаги е добра идея. Горните отговори и насоки трябва да ви помогнат да придобиете солидно разбиране.