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

Leistungsoptimierung und Indizierung von Mysql InnoDB

Der MD5-Hash-Vorschlag, den Sie hatten, ist sehr gut - er ist in High Performance MySQL 2nd Ed dokumentiert. Es gibt ein paar Tricks, um es zum Laufen zu bringen:

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

Ausgewählte Abfragen müssen wie folgt aussehen:

SELECT * FROM urls WHERE url='http://stackoverflow.com ' AND url_crc32=crc32('http://stackoverflow.com ');

Der url_crc32 wurde entwickelt, um mit dem Index zu arbeiten, einschließlich url in der WHERE-Klausel wurde entwickelt, um Hash-Kollisionen zu verhindern.

Ich würde wahrscheinlich crc32 über md5 empfehlen. Es wird ein paar weitere Kollisionen geben, aber Sie haben eine höhere Chance, den gesamten Index in den Speicher einzupassen.