Hvis du har en meget stor tabel, kan det være ekstremt langsomt at søge efter værdier, der ikke er indekseret. I MySQL-termer ender denne form for forespørgsel med at blive en "tabelscanning", som er en måde at sige, at den skal teste mod hver række i tabellen sekventielt. Dette er åbenbart ikke den bedste måde at gøre det på.
Tilføjelse af et indeks vil hjælpe med læse hastigheder, men prisen du betaler er lidt langsommere skriv hastigheder. Der er altid en afvejning, når du laver en optimering, men i dit tilfælde ville reduktionen i læsetid være enorm, mens stigningen i skrivetid ville være marginal.
Husk, at tilføjelse af et indeks til en stor tabel kan tage lang tid, så test dette mod produktionsdata, før du anvender det på dit produktionssystem. Tabellen vil sandsynligvis være låst i varigheden af ALTER TABLE
erklæring.
Brug som altid EXPLAIN
på dine forespørgsler for at bestemme deres udførelsesstrategi. I dit tilfælde ville det være noget som:
EXPLAIN SELECT * FROM table1 WHERE my_big_number=19287319283784