Heim  >  Artikel  >  Datenbank  >  Verursacht ein einfaches Anführungszeichen einen Leistungsverlust bei MySQL?

Verursacht ein einfaches Anführungszeichen einen Leistungsverlust bei MySQL?

藏色散人
藏色散人nach vorne
2020-05-18 16:31:282393Durchsuche

MYSQL-Leistungsverlust durch ein einfaches Anführungszeichen

Es ist unvermeidlich, im Leben auf Unzufriedenheit zu stoßen, einige von uns selbst und andere nicht. Heute ist die Wintersonnenwende, die als der kürzeste Tag und die längste Nacht auf der Nordhalbkugel gilt. Heute möchten wir Ihnen mitteilen, dass einer meiner Kollegen den großen Unterschied zwischen dem Hinzufügen von einfachen Anführungszeichen oder nicht erwähnt hat, was für die Leistungsoptimierung von MYSQL sehr bedeutsam ist.

Wie wir gerade gesagt haben, wird es im Leben zwangsläufig eine gewisse Unzufriedenheit geben. Beispielsweise ist die Verwendung eines Zeichenfolgenfelds als Primärschlüssel oberflächlich betrachtet zu unbefriedigend nützlich sein. Das Problem entsteht, wenn dem Feldwert in der Abfrageanweisung einfache Anführungszeichen hinzugefügt werden, unterscheidet sich die Abfragezeit um das Hundertfache!

Die von mir erstellte Testtabelle sieht folgendermaßen aus:

CREATE TABLE `foo` (
      `key` VARCHAR(10) NOT NULL,
      `time` INT(11) NOT NULL,
      PRIMARY KEY (`key`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Fügen Sie dann mehr als 300.000 Datenelemente ein und führen Sie dann die folgende SQL-Anweisung aus:

SELECT *
FROM `foo`
WHERE `key` =1293322797

Die Abfrage dauert 0,1288 Sekunden, es dauert ungefähr so ​​lange, und fügen Sie dann einfache Anführungszeichen zu 1293322797 hinzu:

SELECT *
FROM `foo`
WHERE `key` ='1293322797'

Die Abfrage dauert 0,0009 Sekunden, was im Grunde einem 100-fachen Unterschied entspricht! ! ! Mit anderen Worten: Die Leistung von MYSQL ohne einfache Anführungszeichen wird um das Hundertfache reduziert, was ein schockierendes Verhältnis ist!

Später habe ich EXPLAIN verwendet, um die beiden obigen Anweisungen jeweils auszuführen, wie in den beiden Bildern unten gezeigt:

Ohne einfache Anführungszeichen

Verursacht ein einfaches Anführungszeichen einen Leistungsverlust bei MySQL?

Bei Verwendung von einfachen Anführungszeichen

Verursacht ein einfaches Anführungszeichen einen Leistungsverlust bei MySQL?

ist es offensichtlich, dass der obere Index nicht ohne einfache Anführungszeichen verwendet werden kann und ein vollständiger Tabellenscan durchgeführt werden kann oberer Index.

Später habe ich sie separat mit „größer als“ getestet, und die zurückgegebenen Ergebnismengen waren die gleichen, und ihr Zeitaufwand war derselbe wie oben. Zum Testen habe ich EXPLAIN verwendet, und es war derselbe wie oben.

SELECT * FROM `foo`  WHERE `key` >1293322797
SELECT * FROM `foo` WHERE `key` >'1293322797'

Mit einfachen Anführungszeichen und ohne Das Hinzufügen von einfachen Anführungszeichen macht einen großen Unterschied! Es wird einen großen Einfluss auf die MySQL-Leistung haben.

Später habe ich den Feldschlüssel in den Typ INT geändert. Derzeit gibt es keinen Unterschied darin, ob einfache Anführungszeichen hinzugefügt werden sollen oder nicht. EXPLAIN zeigt, dass sie auch den Hauptindex verwenden können, aber key_len wird kürzer.

Verursacht ein einfaches Anführungszeichen einen Leistungsverlust bei MySQL?

Empfohlen: „MySQL-Tutorial

Das obige ist der detaillierte Inhalt vonVerursacht ein einfaches Anführungszeichen einen Leistungsverlust bei MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen