2011-07-23 4 views
0

Je suis confronté à un problème lors de la commande sur une table.Oracle ordre par requête très lent

Ma requête de sélection fonctionne correctement, mais lorsque je la commande (même sur la clé primaire), elle est allumée et continue sans résultat. Enfin, j'ai besoin de tuer la session. La table contient des enregistrements 20K. Une suggestion pour ce produit? Query est comme:

SELECT * FROM Users ORDER BY ID; 

Je ne sais pas sur le plan de requête que je suis nouveau à Oracle

+0

Pour commencer, pouvez-vous poster la requête et le plan de requête? Combien de temps la requête s'exécute-t-elle avant de la tuer? Combien de lignes la requête renvoie-t-elle? –

+0

@Justin Cave: SQL Developer affiche simplement l'icône de chargement même après 20 minutes. donc j'ai besoin de tuer avec l'option gauche – user367134

+0

OK. Modifiez-vous votre question pour ajouter la requête et le plan de requête? Qu'en est-il du nombre de lignes qui sont retournées? –

Répondre

0
  1. Pour la requête non ordonnée, récupère SQL Developer et l'affichage 20K lignes, ou tout simplement la fisrt 50? Votre comparaison pourrait ne pas être juste.
  2. Quelle est la taille de ces lignes 20K: select bytes/1024/1024 MB from user_segments where segment_name = 'USERS'; J'ai vu de nombreux cas où quelques mégaoctets de données utilisent plusieurs gigaoctets de stockage. Peut-être que les données étaient très importantes avant et que quelqu'un l'a supprimé (cela ne supprime pas l'espace). Ou peut-être que quelqu'un a inséré ces lignes 1 à la fois avec un indice APPEND, et chaque ligne prend un bloc entier.
  3. Votre requête est peut-être en attente de plus d'espace table temporaire pour le tri, consultez DBA_RESUMABLE.