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

Използвайте съюз или присъединяване - какво е по-бързо

Съюзът ще бъде по-бърз, тъй като просто предава първия оператор SELECT и след това анализира втория оператор SELECT и добавя резултатите в края на изходната таблица.

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

РЕДАКТИРАНЕ

Под Union имам предвид Union All, тъй като изглеждаше адекватно за това, което се опитвахте да постигнете. Въпреки че нормалното обединение обикновено е по-бързо от присъединяването.

РЕДАКТИРАНЕ 2 (Отговор на коментар на @seebiscuit)

не съм съгласен с него. Технически погледнато, без значение колко добро е вашето присъединяване, "JOIN" все още е по-скъпо от чистото свързване. Направих публикация в блог, за да го докажа в моя блог codePERF[dot]net . На практика те служат за 2 напълно различни цели и е по-важно да се уверите, че индексирането ви е правилно и да използвате правилния инструмент за работата.

Технически, мисля, че може да се обобщи, като се използват следните 2 плана за изпълнение, взети от публикацията ми в блога:

UNION ALL План за изпълнение

JOIN План за изпълнение

Практически резултати

На практика разликата при търсене в клъстерен индекс е незначителна:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Сигналът за запис на Django пост се извиква два пъти въпреки uid

  2. Как ефективно да използвам MySQLDB SScursor?

  3. Какъв вид хеш използва mysql?

  4. Кумулативна сума за набор от редове в mysql

  5. MySql WorkBench AES 256 декриптиране