Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Würde es helfen, der BIGINT-Spalte in MySQL einen Index hinzuzufügen?

Wenn Sie eine sehr große Tabelle haben, kann die Suche nach Werten, die nicht indiziert sind, extrem langsam sein. In MySQL-Begriffen endet diese Art von Abfrage als "Tabellenscan", was bedeutet, dass jede Zeile in der Tabelle nacheinander getestet werden muss. Dies ist offensichtlich nicht der beste Weg, dies zu tun.

Das Hinzufügen eines Index hilft bei read Geschwindigkeiten, aber der Preis, den Sie zahlen, ist ein etwas langsameres Schreiben Geschwindigkeiten. Es gibt immer einen Kompromiss bei der Optimierung, aber in Ihrem Fall wäre die Verringerung der Lesezeit immens, während die Erhöhung der Schreibzeit marginal wäre.

Denken Sie daran, dass das Hinzufügen eines Indexes zu einer großen Tabelle viel Zeit in Anspruch nehmen kann. Testen Sie dies daher anhand von Produktionsdaten, bevor Sie es auf Ihr Produktionssystem anwenden. Die Tabelle wird wahrscheinlich für die Dauer von ALTER TABLE gesperrt Erklärung.

Verwenden Sie wie immer EXPLAIN auf Ihre Abfragen, um deren Ausführungsstrategie zu bestimmen. In Ihrem Fall wäre es so etwas wie:

EXPLAIN SELECT * FROM table1 WHERE my_big_number=19287319283784