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

Kiedy używać podpowiedzi w zapytaniu Oracle

Większość wskazówek to sposób na przekazanie naszej intencji optymalizatorowi. Na przykład leading wskazówka, o której wspomniałeś, oznacza dołączanie do stołów w tej kolejności . Dlaczego jest to konieczne? Często dzieje się tak dlatego, że optymalna kolejność łączenia nie jest oczywista, ponieważ zapytanie jest źle napisane lub statystyki bazy danych są niedokładne.

Więc jedno użycie podpowiedzi, takich jak leading jest ustalenie najlepszej ścieżki wykonania, a następnie ustalenie, dlaczego baza danych nie wybiera tego planu bez podpowiedzi. Czy zbieranie świeżych statystyk rozwiązuje problem? Czy przepisanie klauzuli FROM rozwiązuje problem? Jeśli tak, możemy usunąć podpowiedzi i wdrożyć czysty kod SQL.

Czasami zdarza się, że nie możemy rozwiązać tej zagadki i musimy zachować wskazówki w produkcji. Jednak powinien to być rzadki wyjątek. Oracle od wielu lat zatrudnia wielu bardzo mądrych ludzi pracujących nad Optymalizatorem Kosztów, więc jego decyzje są zazwyczaj lepsze niż nasze.

Ale są też inne wskazówki, których nie chcielibyśmy zobaczyć w Produkcji. append ma często kluczowe znaczenie przy dostrajaniu wstawek zbiorczych. driving_site może mieć kluczowe znaczenie w dostrajaniu zapytań rozproszonych.

Odwrotnie, inne wskazówki są prawie zawsze nadużywane. Tak parallel , Mówię o tobie. Ślepe stawianie /*+ parallel (t23, 16) */ prawdopodobnie nie sprawi, że Twoje zapytanie będzie działać szesnaście razy szybciej, a nierzadko spowoduje wolniejsze pobieranie niż wykonanie jednowątkowe.

Krótko mówiąc, nie ma uniwersalnej porady, kiedy powinniśmy używać podpowiedzi. Najważniejsze rzeczy to:

  1. zrozumieć, jak działa baza danych, a zwłaszcza jak działa optymalizator kosztowy;
  2. zrozumieć, co robi każda podpowiedź;
  3. przetestuj zapytania ze wskazówkami w odpowiednim środowisku dostrajania z danymi ekwiwalentnymi w produkcji.

Oczywiście najlepszym miejscem do rozpoczęcia jest dokumentacja Oracle . Jeśli jednak masz ochotę wydać trochę pieniędzy, książka Jonathana Lewisa na temat Optymalizatora kosztów to najlepsza inwestycja, jaką możesz zrobić.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ciąg oddzielony przecinkami do listy

  2. Oracle SQL Developer — jak odzyskać upuszczoną tabelę

  3. PLS-00103:Napotkano symbol END podczas oczekiwania + &=itp

  4. Jak znaleźć zablokowane wiersze w Oracle

  5. Czytanie clob linia po linii z pl\sql