Ако имате много голяма таблица, тогава търсенето на стойности, които не са индексирани, може да бъде изключително бавно. От гледна точка на MySQL този вид заявка завършва като „сканиране на таблица“, което е начин да се каже, че трябва да се тества срещу всеки ред в таблицата последователно. Това очевидно не е най-добрият начин да го направите.
Добавянето на индекс ще помогне при четене скорости, но цената, която плащате, е малко по-бавна пишете скорости. Винаги има компромис, когато се прави оптимизация, но във вашия случай намаляването на времето за четене би било огромно, докато увеличението на времето за запис би било незначително.
Имайте предвид, че добавянето на индекс към голяма таблица може да отнеме значително време, така че тествайте това спрямо производствени данни, преди да го приложите към вашата производствена система. Таблицата вероятно ще бъде заключена за времетраенето на ALTER TABLE
изявление.
Както винаги, използвайте EXPLAIN
на вашите заявки, за да определи стратегията им за изпълнение. Във вашия случай това би било нещо като:
EXPLAIN SELECT * FROM table1 WHERE my_big_number=19287319283784