Maison > Questions et réponses > le corps du texte
Nous avons créé un index spécifiquement pour une requête mais j'ai constaté que l'exécution de la requête prend 5 à 6 secondes. J'ai essayé d'obtenir l'index inutilisé à l'aide de la requête suivante et j'ai remarqué que l'index est répertorié dans la liste des index inutilisés. Veuillez suggérer comment obtenir de meilleures performances pour la requête suivante.
Requête clause Where : WHERE parsedjobdescription IS NOT NULL AND is_updated != 0
Index : KEYidx_jobs_feed_parsedjobdescription_is_updated(
(
parsedjobdescription(700),
is_updated)
parsedjobdescription(700),
)SELECT * FROM sys.schema_unused_indexes;
Index inutilisés : SELECT * FROM sys.schema_unused_indexes;parsedjobdescription varchar(50000) DEFAULT NULL is_updated tinyint(1) DEFAULT '0'
Colonne : parsedjobdescription varchar(50000) DEFAULT NULL is_updated tinyint(1) DEFAULT '0'
Expliquez la requête :
Clés possibles : idx_jobs_feed_parsedjobdescription_is_updated, idx_is_updated
Clé : idx_jobs_feed_parsedjobdescription_is_updated
Longueur de clé : 703
Nombre de lignes : 1
🎜Filtré : 50,0🎜
P粉2327937652024-04-01 09:01:20
Trois choses à éviter en utilisant deux colonnes indexées :
N'EST PAS NULL - Une fois la plage atteinte, les colonnes restantes ne seront pas utilisées.
is_updated != 0 -- C'est aussi une "plage".
Il y a un problème avec le préfixe d'index.
INDEX(parsedjobdescription(700), ... -- won't get past that prefix to use anything after it.
Si le test est is_updated = 1
, vous pouvez retourner l'index (ou ajouter un autre index) :
INDEX(is_updated, parsedjobdescription(100))