2010-11-22 26 views
1

IDS 9.04 sous unix.Requête Informix lente

J'ai une table qui a 200000+ rangées, chaque rangée a plus de 200 colonnes. quand j'exécute une requête (censé revenir 470+ lignes de 50 colonnes) sur ce tableau, il faut plus de 100 secondes pour revenir, et DbVisualizer m'a dit:

temps eexecution: 4.87 sec chercher temps: 97,56 secondes

si j'exporter toutes les 470+ lignes dans un fichier, la taille du fichier à moins de 800K

STATISTIQUES UPDATE a été runned, seulement 50 colonnes sélectionnées, pas blob impliqué, si je sélectionne 100 premières lignes, il ne besoin de 5 secondes pour revenir.

Aide Plz!

+0

Quelle version d'Informix, sur quelle plateforme? Quelles sont les conditions dans la requête? Que dit le plan de requête? Avez-vous exécuté UPDATE STATISTICS? Approximativement, quelle est la largeur des colonnes - sélectionnées et non sélectionnées? Y a-t-il des blobs impliqués? –

+0

IDS 9.04 sous unix. – idiotgenius

+0

MISE À JOUR STATISTIQUES a été exécuté, seulement 50 colonnes sélectionnées, pas de blob impliqué, si je choisis les 100 premières lignes, il ne faut que 5 secondes pour revenir. – idiotgenius

Répondre

0

Si SELECT FIRST 100 ne prend que quelques secondes, cela suggère que le plan de requête de FIRST_ROWS est radicalement différent de celui de ALL_ROWS. Essayez d'exécuter la requête avec SET EXPLAIN ON; à la fois avec et sans le n premier. Cela pourrait vous donner une idée de ce qui se passe.

0

Utilisation:

définir explain on avoid_execute;

YOUR_QUERY

ensemble expliquer au large;

Et consultez le fichier sqexplain.out dans votre dossier.