Maison  >  Article  >  base de données  >  Un guillemet simple entraîne-t-il une perte de performances MySQL ?

Un guillemet simple entraîne-t-il une perte de performances MySQL ?

藏色散人
藏色散人avant
2020-05-18 16:31:282325parcourir

Perte de performances MYSQL causée par une simple citation

Il est inévitable de rencontrer une certaine insatisfaction dans la vie, certaines de nous-mêmes et d'autres non. Aujourd'hui, c'est le solstice d'hiver, qui est considéré comme le jour le plus court et la nuit la plus longue de l'hémisphère nord. Aujourd'hui, nous allons partager qu'un de mes collègues a mentionné l'énorme différence entre l'ajout ou non de guillemets simples, ce qui est très significatif pour l'optimisation des performances MYSQL.

Comme nous venons de le dire, il y aura inévitablement une certaine insatisfaction dans la vie. Par exemple, nous utilisons un champ de type chaîne comme clé primaire. En apparence, c'est trop insatisfaisant. être utile à. Le problème se pose. Lorsque des guillemets simples sont ajoutés à la valeur du champ dans l’instruction de requête, l’heure de la requête diffère cent fois !

La table de test que j'ai créée ressemble à ceci :

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

Insérez ensuite plus de 300 000 données, puis exécutez l'instruction SQL suivante :

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

La requête prend 0,1288 secondes, cela prend environ autant de temps, puis ajoutez des guillemets simples à 1293322797 :

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

La requête prend 0,0009 seconde, ce qui représente fondamentalement une différence de 100 fois ! ! ! En d'autres termes, sans ajouter de guillemets simples, les performances de MYSQL sont réduites de 100 fois, ce qui est un ratio choquant !

Plus tard, j'ai utilisé EXPLAIN pour exécuter respectivement les deux instructions ci-dessus, comme le montrent les deux images ci-dessous :

Sans guillemets simples

Un guillemet simple entraîne-t-il une perte de performances MySQL ?

Avec Lors de l'utilisation de guillemets simples

Un guillemet simple entraîne-t-il une perte de performances MySQL ?

, il est évident que l'index supérieur n'est pas utilisé sans utiliser de guillemets simples, et une analyse complète du tableau est effectuée à l'aide de guillemets simples. indice supérieur.

Plus tard, je les ai testés séparément en utilisant supérieur à, et les ensembles de résultats renvoyés étaient les mêmes, et leur durée était la même que ci-dessus. J'ai utilisé EXPLAIN pour tester, et c'était la même chose que ci-dessus.

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

Avec des guillemets simples et sans L'ajout de guillemets simples fait une si grande différence ! Cela aura un impact très important sur les performances de MySQL.

Plus tard, j'ai changé la clé de champ en type INT. Pour le moment, il n'y a aucune différence entre des guillemets simples ou non. EXPLAIN montre qu'ils peuvent également utiliser l'index principal, mais key_len devient plus court.

Un guillemet simple entraîne-t-il une perte de performances MySQL ?

Recommandé : "Tutoriel mysql"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer