sql >> Database teknologi >  >> RDS >> Mysql

Ville det hjælpe at tilføje indeks til BIGINT-kolonnen i MySQL?

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


  1. Hvordan konverteres et heltal (tid) til TT:MM:SS::00 i SQL Server 2008?

  2. Ikke latinske tegn &oh

  3. Jeg prøver en simpel forespørgsel med in parameter med mysql 5.5 gennem jdbc kode

  4. Ændring af MySQL-tabel for at tilføje fremmednøglebegrænsning fører til fejl