Als u een zeer grote tabel heeft, kan het zoeken naar waarden die niet zijn geïndexeerd erg traag zijn. In MySQL-termen wordt dit soort query uiteindelijk een "tabelscan", wat een manier is om te zeggen dat het achtereenvolgens tegen elke rij in de tabel moet worden getest. Dit is natuurlijk niet de beste manier om het te doen.
Het toevoegen van een index helpt bij lezen snelheden, maar de prijs die u betaalt is iets langzamer schrijf snelheden. Er is altijd een afweging bij het maken van een optimalisatie, maar in uw geval zou de vermindering van de leestijd enorm zijn, terwijl de toename van de schrijftijd marginaal zou zijn.
Houd er rekening mee dat het toevoegen van een index aan een grote tabel een aanzienlijke hoeveelheid tijd kan kosten, dus test dit met productiegegevens voordat u het op uw productiesysteem toepast. De tafel zal waarschijnlijk worden vergrendeld voor de duur van de ALTER TABLE
verklaring.
Gebruik zoals altijd EXPLAIN
op uw vragen om hun uitvoeringsstrategie te bepalen. In jouw geval zou het zoiets zijn als:
EXPLAIN SELECT * FROM table1 WHERE my_big_number=19287319283784