Oracle
 sql >> база данни >  >> RDS >> Oracle

Условия за присъединяване на множество колони срещу единично присъединяване на свързани колони?

Мисля, че версията с конкатенация практически винаги ще бъде по-бавна.

Ако някоя от колоните, които сравнявате поотделно, има индекси, базата данни обикновено ще може да използва индексите за оптимизиране на присъединяването. Когато сравнявате конкатенации, той трябва да извърши пълно сканиране на таблица, тъй като резултатът от изчислението няма да бъде в индекса.

И дори ако колоните не са индексирани, базата данни пак може да извършва сравненията по-ефективно. Той сравнява една двойка колони наведнъж и може да спре веднага щом едно от тези сравнения се провали. Когато използва конкатенацията, първо трябва да комбинира всички колони в двата реда, след което да направи сравнение на низове.

И накрая, ако някоя от колоните е числова, конкатенацията ще изисква допълнителната стъпка за преобразуване на числото в низ.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. NUMTODSINTERVAL в PostgreSQL

  2. Процедура за изтриване само ако базата данни е по-висока от sysdate

  3. Рекурсивно изброяване на концентрациите на изгледа DBA_DEPENDENCIES на Oracle

  4. Заявка е зададена в Concurrent Manager

  5. Как да накарам хибернация да генерира синтаксис FOR UPDATE WAIT 10 на Oracle