Jeśli masz bardzo dużą tabelę, wyszukiwanie wartości, które nie są indeksowane, może być bardzo powolne. W terminologii MySQL ten rodzaj zapytania kończy się „skanowaniem tabeli”, co oznacza, że musi testować kolejno każdy wiersz w tabeli. To oczywiście nie jest najlepszy sposób na zrobienie tego.
Dodanie indeksu pomoże w czytaniu prędkości, ale cena, którą płacisz, jest nieco wolniejsza zapis prędkości. Podczas optymalizacji zawsze istnieje kompromis, ale w twoim przypadku skrócenie czasu odczytu byłoby ogromne, podczas gdy wzrost czasu zapisu byłby marginalny.
Należy pamiętać, że dodanie indeksu do dużej tabeli może zająć dużo czasu, więc przetestuj to z danymi produkcyjnymi przed zastosowaniem go w systemie produkcyjnym. Tabela prawdopodobnie zostanie zablokowana na czas trwania ALTER TABLE
oświadczenie.
Jak zawsze, użyj EXPLAIN
na Twoje zapytania, aby określić ich strategię wykonania. W twoim przypadku byłoby to coś takiego:
EXPLAIN SELECT * FROM table1 WHERE my_big_number=19287319283784