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🎜
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.
Si le test est
is_updated = 1
, vous pouvez retourner l'index (ou ajouter un autre index) :