sql >> Database >  >> RDS >> Mysql

Mysql InnoDB prestatie-optimalisatie en indexering

De MD5 hash-suggestie die je had is erg goed - het is gedocumenteerd in High Performance MySQL 2nd Ed. Er zijn een paar trucjes om het werkend te krijgen:

CREATE TABLE urls (id NOT NULL primaire sleutel auto_increment,url varchar(255) not null,url_crc32 INT UNSIGNED not null,INDEX (url_crc32));

Bepaalde zoekopdrachten moeten er als volgt uitzien:

SELECTEER * UIT url's WAAR url='http://stackoverflow.com ' AND url_crc32=crc32('http://stackoverflow.com ');

De url_crc32 is ontworpen om met de index te werken, inclusief de url in de WHERE-clausule is ontworpen om hash-botsingen te voorkomen.

Ik zou waarschijnlijk crc32 aanbevelen boven md5. Er zullen nog een paar botsingen zijn, maar je hebt een grotere kans dat de hele index in het geheugen past.



  1. Veld in gegevensbestand overschrijdt maximale lengte - fout

  2. Moet ik mysql_real_escape_string het wachtwoord invoeren dat in het registratieformulier is ingevoerd?

  3. Ruimtelijke index in MySQL - ERROR - Kan geen geometrie-object ophalen uit gegevens die u naar het veld GEOMETRY verzendt

  4. Hoe selecteer ik alleen het laatste item in een tabel?