J'ai une table avec plus de 1 million d'entrées.La requête SELECT est lente (aucun index nécessaire), pourquoi est-elle si lente?
Le problème est lié à la vitesse des requêtes SELECT. Celui-ci est très rapide:
SELECT *
FROM tmp_pages_data
WHERE site_id = 14294
Showing rows 0 - 29 (1,273,042 total, Query took 0.0009 sec)
Et celui-ci est très lent:
SELECT *
FROM tmp_pages_data
WHERE page_status = 0
Showing rows 0 - 29 (15,394 total, Query took 0.3018 sec)
Il y a un index sur la colonne id, et non nécessaire dans l'une des sélections. Donc il n'y a pas d'index sur le site_id ou l'état de la page.
La requête de 0,30 seconde est très dérangeante, surtout lorsqu'il y a des milliers de requêtes.
Alors, comment cela peut-il être possible? Que puis-je faire pour voir ce qui le ralentit?
Combien de valeurs différentes de 'page_status' avez-vous:' SELECT DISTINCT page_status FROM tmp_pages_data' Parce qu'un index sur la colonne n'aiderait pas s'il n'y a que deux valeurs possibles. –
Quel est le schéma? La première requête peut-elle renvoyer * toutes * les lignes? (1,273,042 ressemble à "plus de 1 million" ...) – Wolfgang
Il y a 5 valeurs pour 'page_status'. @Wolfgang: oui, la première requête renvoie toutes les lignes. Et je ne supprimerai pas la colonne site_id puisque j'en aurai besoin quand la base de données aura plus de 50 millions de lignes – okaybmd