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

Warunki łączenia w wielu kolumnach a pojedyncze sprzężenie w połączonych kolumnach?

Myślę, że wersja z konkatenacją będzie praktycznie zawsze wolniejsza.

Jeśli którakolwiek z porównywanych kolumn pojedynczo ma indeksy, baza danych zwykle będzie mogła użyć indeksów do optymalizacji złączenia. Kiedy porównujesz konkatenacje, musi wykonać pełne skanowanie tabeli, ponieważ wynik obliczenia nie znajdzie się w indeksie.

A nawet jeśli kolumny nie są indeksowane, baza danych może nadal wykonywać porównania wydajniej. Porównuje jedną parę kolumn na raz i może zatrzymać się, gdy tylko jedno z tych porównań się nie powiedzie. Podczas korzystania z konkatenacji, musi najpierw połączyć wszystkie kolumny w obu wierszach, a następnie dokonać porównania ciągów.

Wreszcie, jeśli którakolwiek z kolumn jest liczbowa, konkatenacja będzie wymagała dodatkowego kroku konwersji liczby na ciąg.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyjątek dotyczący naruszenia ograniczeń ORA-00001

  2. Błąd instrukcji MERGE Oracle (ORA-30926)

  3. Jaka jest różnica między ROWNUM a ROW_NUMBER w bazie danych Oracle?

  4. Użyj wartości zmiennej łańcuchowej w pętli SQL FOR-IN (SELECT)

  5. Jak wybrać dane, które nie pasują do innej kolumny?