0
votes

Mysql. Comme une requête devient trop longue si j'utilise une variable

J'ai la grande table avec 5 millions de mots. J'ai besoin de trouver des mots commençant par une chaîne dynamique. Mais lorsque j'utilise comme-opérateur avec une variable à chaîne, la requête devient trop longue.

Par exemple, cette requête prend 1,3 seconde: P>

select * from words where Word like 'f%' limit 100;


1 commentaires

Sur mots -Table: moteur = myisam, charset = utf8, collate = uf8_bin, clé wordindex ( mot ), mot varchar (100) associer utf8_bin pas null


3 Réponses :


1
votes

Il a tourné que les variables ont utf8mb4 charset (caractères par défaut de ma base de données), mais la colonne word a utf8 bricet.

Tout ce que j'ai besoin de le faire, c'est convertir Charsset en utilisant utf8 : xxx


0 commentaires

0
votes

est un problème de connaissance, car nous stockons une valeur dans le tas puis l'utilise dans la requête en utilisant directement sur la requête, je suggère d'améliorer votre documentation de lecture de performance MySQL ci-dessous: https://geekflare.com/mysql-performance-tuning/


0 commentaires

0
votes
  • construisez la requête plutôt que d'utiliser @variables. Éventuellement utiliser une procédure stockée comme moyen d'utiliser préparer et exécuter.
  • passer de Myisam à InnoDB.
  • vous souciez-vous de quoi 100 rangées? Un limite sans commande par n'est généralement pas approprié.
  • Si c'est vraiment "mots" (pas seulement des lettres comme "F"), considérons Fulltext .
  • Affiche des variables telles que "Char%"; - Ceci peut montrer un endroit plus simple pour régler le jeu de caractères . .

0 commentaires