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

Left Join превъзхожда Inner Join?

Ако смятате, че изпълнението на LEFT JOIN е INNER JOIN + повече работа, тогава този резултат е объркващ. Ами ако изпълнението на INNER JOIN е (LEFT JOIN + филтриране)? А, вече е ясно.

В плановете за заявка единствената разлика е следната:потребители... допълнително:използвайки where . Това означава филтриране. Има допълнителна стъпка за филтриране в заявката с вътрешното присъединяване.

Това е различен вид филтриране, отколкото обикновено се използва в клауза where. Лесно е да създадете индекс на A, за да поддържате това филтриране.

SELECT *
FROM A
WHERE A.ID = 3

Помислете за тази заявка:

SELECT *
FROM A
  LEFT JOIN B
  ON A.ID = B.ID
WHERE B.ID is not null

Тази заявка е еквивалентна на вътрешно присъединяване. Няма индекс на B, който да помогне за това филтриране. Причината е, че клаузата where посочва условие за резултата от присъединяването, вместо условие за B.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да автоматизирате миграцията от самостоятелен MySQL към Galera Cluster с помощта на Ansible

  2. Извличане на редове, добавени миналия час

  3. Amazon RDS Aurora срещу RDS MySQL срещу MySQL на EC2?

  4. Какъв е правилният формат DateTime за MySQL Database?

  5. Как да стартирате RAW SQL заявка в PhalconPHP