Oracle
 sql >> Baza danych >  >> RDS >> Oracle

sql Optimizer dla dużej tabeli Db

Prawdopodobnie powinieneś zacząć od PLAN WYJAŚNIENIA .

Następnie edytuj swoje pytanie i opublikuj instrukcję SQL oraz dane wyjściowe EXPLAIN PLAN.

Później . . .

Nie będę ci zbytnio pomagał w tym pytaniu. 269 ​​linii, co najmniej 29 SELECTów, zapytania równoległe, zdalne bazy danych, złączenia zewnętrzne (w starym stylu) i tak dalej.

Najlepszą radą, jaką mogę ci dać, jest

  • uzyskaj więcej informacji z EXPLAIN PLAN i
  • uprość problem.

tabela planów ma więcej kolumn niż zwykle publikowane. Kolumny COST, CARDINALITY, BYTES i TIME mogą być przydatne przy ustalaniu priorytetów dostrajania.

W tym zapytaniu masz 10 pełnych skanów tabeli. („TABLE ACCESS FULL” w planie kwerendy). To zwykle zły znak; Skanowanie pełnych tabel często zajmuje stosunkowo dużo czasu. To nie jest zawsze zły znak. Pełne skanowanie małej tabeli może być szybsze niż skanowanie indeksu.

Zacznij od uzyskania danych wyjściowych EXPLAIN PLAN dla każdej z 29 instrukcji SELECT w zapytaniu. Jeśli któryś z nich pokazuje pełny skan tabeli, prawdopodobnie możesz poprawić jego wydajność za pomocą odpowiednie indeksy . (Oracle obsługuje wiele różnych rodzajów indeksów. Nie przeocz możliwości indeksów wielokolumnowych.) W każdym razie dane wyjściowe EXPLAIN PLAN pomogą Ci zidentyfikować najwolniejszy z 29 SELECTów.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wyczyścić wszystkie elementy z pamięci podręcznej w Oracle

  2. Oblicz procent korzenia posiadanego przez jego rodziców

  3. Wybierz samogłoski z varchar, Oracle PL/SQL

  4. Oracle:różnica między ciągiem NULL i EMPTY

  5. Czy w Oracle istnieje funkcja, która oblicza różnicę między dwiema datami?