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

Jakikolwiek wpływ na wydajność w Oracle przy użyciu LIKE „ciąg” vs =„ciąg”?

Istnieje wyraźna różnica, gdy używasz zmiennych wiązania, których powinieneś używać w Oracle do czegokolwiek innego niż magazynowanie danych lub inne operacje na danych masowych.

Weźmy na przykład:

SELECT * FROM SOME_TABLE WHERE SOME_FIELD LIKE :b1

Oracle nie może wiedzieć, że wartość :b1 wynosi '%jaka_wartość%' lub 'jakaś_wartość' itd. do czasu wykonania, więc oszacuje liczność wyniku na podstawie heurystyki i opracuje odpowiedni plan, który albo może, ale nie musi być odpowiedni dla różnych wartości :b, takich jak '%A', '%', 'A' itp.

Podobne problemy mogą wystąpić z predykatem równości, ale zakres kardynalności, który może wyniknąć, jest znacznie łatwiej oszacowany na przykład na podstawie statystyk kolumnowych lub obecności unikalnego ograniczenia.

Więc osobiście nie zacząłbym używać LIKE jako zamiennika =. Optymalizator jest czasami dość łatwy do oszukania.



  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 porównać dwa obiekty bazy danych w Oracle?

  2. Jak włączyć tryb dziennika archiwizacji w Oracle Database 19c?

  3. Jak wprowadzać znaki specjalne, takie jak &w bazie danych Oracle?

  4. Wstaw zbiorczy do bazy danych Oracle:Co jest lepsze:pętla FOR Cursor czy prosty Select?

  5. Jak wyświetlić obraz z kolumny blob w Oracle za pomocą JasperReports?