2012-05-07 8 views
1

Cette requête prend environ 10 secondes pour exécuter la première fois, puis chaque fois consécutive, il prend plus de une minute:requête lente mysql - sélectionnez

SELECT qQuoteDateTime, 
     qLastSalePrice, 
     qNetChangePrice, 
     qNetChangePct, 
     qShareVolumeQty 
    FROM quotes 
    WHERE qSymbol='GE' 

Le tableau que je utilise a environ 2300 dossiers. J'ai vu quelqu'un implémenter une requête décemment rapide pour afficher tous les enregistrements, mais je n'ai pas accès au code qu'il a utilisé.

Comment puis-je accélérer cela?

+0

Quels sont les types de données de toutes vos colonnes? Pouvez-vous s'il vous plaît afficher le DDL à la fois Votre bon sens et reko_t sont corrects. Si toutes vos colonnes sont nchar ou un blob etc, cela pourrait avoir plus de sens. – Ben

+0

Quelle est la "taille" des données? Peu de KB, un ou deux MBs de plus? J'ai déjà eu un problème similaire avec les données MySQL; J'avais quelques centaines de rangées mais la taille de la table était de ~ 1,5 Go; Traversant cette quantité de données peut prendre quelques secondes. –

Répondre

4

Exécutez un EXPLAIN sur la requête pour voir pourquoi elle est lente. La cause la plus probable est que la colonne qSymbol manque un index. Créez un index sur la colonne s'il en manque un et vous devriez voir une amélioration considérable des performances, car MySQL n'aura pas à parcourir chaque ligne de la table, mais peut simplement rechercher les lignes correspondantes de l'index.

+0

@Downvoter: Vous voulez commenter? –

+0

Pourquoi était-ce downvoted? On dirait une réponse parfaite à moi .. – dirkbonhomme

+1

Pour les 2300 lignes, il ne peut pas être 10 sec à la minute sans index. Ceci est juste une réponse automatique avec des informations générales, ne aidant personne, mais seulement pour obtenir des points de rep –

3

Il y a un problème avec votre base de données. Ou vous aboyer le mauvais arbre.
La requête que vous avez affichée ici devrait être rapide pour le nombre de lignes donné. Tout d'abord, assurez-vous que c'est une requête, rien d'autre qui le provoque.
Avez-vous essayé d'exécuter cette requête depuis la console? PHPMyAdmin? Les résultats sont-ils les mêmes? L'exécutez-vous à l'intérieur de la boucle par hasard?
Est-ce que la ligne compte vraiment 2300, pas 2300 milliers?