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

Left JOIN по-бързо или Inner Join по-бързо?

Зависи; пуснете и двамата, за да разберете; след това стартирайте 'explain select' за обяснение.

Действителната разлика в производителността може да варира от „практически несъществуваща“ до „доста значителна“ в зависимост от това колко реда в A с id='12345' нямат съвпадащи записи в B и C.

Актуализиране (въз основа на публикувани планове за заявки)

Когато използвате INNER JOIN, няма значение (по отношение на резултатите, а не по отношение на производителността) с коя таблица да започнете, така че оптимизаторът се опитва да избере тази, която смята, че ще работи най-добре. Изглежда, че имате индекси за всички подходящи колони PK / FK и или нямате индекс на friend_events.userid или има твърде много записи с userid = '13006' и не се използва; така или иначе оптимизаторът избира таблицата с по-малко редове като "база" - в този случай това е zcms_users .

Когато използвате LEFT JOIN, това прави има значение (по отношение на резултатите) с коя таблица да започнем; така friend_events е избран. Сега защо по този начин отнема по-малко време, не съм съвсем сигурен; Предполагам friend_events.userid състоянието помага. Ако добавите индекс (действително ли е varchar, между другото? не е числов?) към него, вашето INNER 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. Как да се свържете с MySQL база данни

  2. Как да проверя дали полето е нула или празно в MySQL?

  3. В MySQL трябва ли да цитирам числа или не?

  4. MySQL - ПРИСЪЕДИНЕТЕ се към ИЛИ b

  5. Застой в MySQL поради вмъкване от множество нишки