MySQL няма да използва индекса, ако прецени, че ще избере значително голяма част от таблицата и смята, че сканирането на таблицата всъщност е по-ефективно в тези случаи.
По аналогия, това е причината индексът на книгата да не съдържа много често срещани думи като „the“ – защото би било загуба на време да се търси думата в индекса и да се намери списъкът с номера на страниците е много дълъг списък, дори всяка страница от книгата. Би било по-ефективно просто да прочетете книгата от кора до кора.
Моят опит е, че това се случва в MySQL, ако критериите за търсене на заявка отговарят на повече от 20% от таблицата и това обикновено е правилната точка на пресичане. Може да има някои вариации въз основа на типовете данни, размера на таблицата и т.н.
Можете да дадете намек на MySQL, за да го убедите, че сканирането на таблица би било непосилно скъпо, така че би било много по-вероятно да използвате индекса. Това обикновено не е необходимо, но можете да го направите по следния начин:
SELECT taskid FROM tasktransitions FORCE INDEX (transitiondate_ix)
WHERE transitiondate>'2013-09-31 00:00:00';