sql >> Database >  >> RDS >> Mysql

Zou het helpen om een ​​index toe te voegen aan de BIGINT-kolom in MySQL?

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


  1. Hoe maak je een Oracle-databaseproject met Visual studio 2010?

  2. Android Studio controleert/markeert Kotlin Room DAO-query's niet wanneer string meer dan 1 rij beslaat

  3. Hoe INSTR() werkt in MariaDB

  4. Hoe te controleren of een rij bestaat in een opgeslagen PostgreSQL-procedure?