Index disponible mais toujours pas utilisé - MySQL
P粉668019339
P粉668019339 2024-03-31 09:51:35
0
1
427

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),

is_updated)

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粉668019339
P粉668019339

répondre à tous(1)
P粉232793765

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))
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal