sql >> Databasteknik >  >> RDS >> Mysql

Skulle det hjälpa att lägga till index till BIGINT-kolumnen i MySQL?

Om du har en mycket stor tabell kan det gå extremt långsamt att söka efter värden som inte är indexerade. I MySQL-termer slutar den här typen av fråga med att bli en "tabellskanning" vilket är ett sätt att säga att den måste testas mot varje rad i tabellen sekventiellt. Detta är uppenbarligen inte det bästa sättet att göra det.

Att lägga till ett index hjälper dig att läsa hastigheter, men priset du betalar är något långsammare skriv hastigheter. Det finns alltid en avvägning när man gör en optimering, men i ditt fall skulle minskningen av lästiden vara enorm medan ökningen av skrivtiden skulle vara marginell.

Tänk på att det kan ta lång tid att lägga till ett index i en stor tabell, så testa detta mot produktionsdata innan du tillämpar det på ditt produktionssystem. Tabellen kommer sannolikt att vara låst under ALTER TABLE uttalande.

Som alltid, använd EXPLAIN på dina frågor för att bestämma deras exekveringsstrategi. I ditt fall skulle det vara något i stil med:

EXPLAIN SELECT * FROM table1 WHERE my_big_number=19287319283784


  1. Hur man tar bort poster INTE IN

  2. SQL lagrad procedur - variabel för kort

  3. Välj distinkta värden från 1 kolumn

  4. SQL Server:hur man väljer ett fast antal rader (välj vart x:te värde)