2016-10-15 4 views
0

Für vorhandene Tabelle habe ich den Index hinzugefügt, um die Leistung zu überprüfen. Tabelle hat 1,5 Millionen Datensätze. Die bestehenden Kosten sind "58645". Sobald der Index erstellt wurde, werden die Kosten auf "365" reduziert. So oft habe ich den Index als "unbrauchbar" bezeichnet. Dann ändere ich und baue den Index neu auf, um zu überprüfen. Für gestern bekannt ist der Index von EXPLAIN Plan in Orakel verwendet. Aber heute, wenn ich den Index unbrauchbar und neu aufzubauen, in Explain Plan der Index Scan funktionierte nicht. Aber Leistung bleibt schnell als älter. Ich bin gefallen und neu erstellt. Aber das Problem ist immer noch. Das Abrufen ist schnell. Aber der EXPLAIN-Plan zeigt, dass der Index nicht verwendet wird und die Kosten "58645" anzeigen. Ich bleibe dabei.Index scannt nicht, nachdem es unbrauchbar gemacht wurde

+0

Für solche Tests, die Sie besser 'ALTER INDEX verwenden können ... INVISIBLE;', siehe [ALTER INDEX] (http://docs.oracle.com/database/121/SQLRF/statements_1012.htm#SQLRF52779) –

+0

sollte die Leistung Ihr Kriterium sein. aber wegen der Anzahl von Aufzeichnungen, die durch Abfrage abgerufen werden, kann der Plan von Indexbereichsscan zu vollständigem Tabellenscan wechseln. –

+0

Versuchen Sie, sich den tatsächlichen Ausführungsplan in der Sitzungsablaufverfolgung anzusehen, er kann von * explainplan * abweichen. –

Antwort

0

Viele Male, wenn Sie den neuen Index erstellen oder von Grund auf neu erstellen, wird es nicht in EXPLAIN Plan angezeigt und manchmal auch nicht für eine Weile verwendet. Um den Explain-Plan zu korrigieren, sollten die Statistiken auf dem Index gesammelt werden.

EXEC DBMS_STATS.GATHER_INDEX_STATS sollte verwendet werden oder DBMS_STATS.GATHER_TABLE_STATS mit Kaskadenoption verwenden.

0

Datenblöcke werden in der BUFFER_POOL zwischengespeichert, die Ergebnisse so, dass beeinflussen:

  1. Abfrage ausführen;
  2. Änderungsindex;
  3. Abfrage ausführen; - gepufferte Daten von 1 verfälschen die Preformance
  4. Flush Puffer Pool
  5. Abfrage ausführen - jetzt erhalten Sie ein echteres Maß dafür, wie "schnell" die Abfrage ist.

Haben Sie den Puffer gespült?

ALTER SYSTEM FLUSH BUFFER_POOL; 
+0

woo Flushing Puffer Pool ist nicht erforderlich, es ist eigentlich eine schlechte Idee wird eine Menge harte Paresen verursachen .. – MStp

+0

Dies ist zum Testen - das ist, was das OP ich denke versucht zu tun, um die Abfrage Leistung zu vergleichen. – TenG

Verwandte Themen