MySQL Embedded выбирает по сравнениюПрисоединяется

StackOverflow https://stackoverflow.com/questions/2131368

  •  22-09-2019
  •  | 
  •  

Вопрос

Есть ли заметная разница между:

SELECT userid, username, userdept,
    (SELECT deptname FROM depts WHERE deptid=userdept) AS deptname
    FROM users

и

SELECT userid, username FROM users
    INNER JOIN depts ON depts.deptid=users.userdept

Какой из них лучше?

Это было полезно?

Решение

Ваш второй запрос имеет лучшую производительность.

Вы можете увидеть этот пример: http://www.codersrevolution.com/index.cfm/2008/7/31/MySQL-performance-INNER-JOIN-vs-subselect

Другие советы

присоединяйтесь лучше ,

смотрите эту ссылку :http://www.selikoff.net/2008/12/10/memo-avoid-nested-queries-in-mysql-at-all-costs/

вы можете видеть многие обсуждения в SO и по этой теме тоже.

Эти два запроса не являются синонимами.

Они были бы синонимами, если бы вы заменили INNER JOIN с помощью LEFT JOIN, за исключением того , что подзапрос может завершиться неудачей , если deptid не является уникальным, в то время как LEFT JOIN всегда добьется успеха.

Если есть UNIQUE индекс на depts.deptid (что, скорее всего, так и есть, поскольку это поле, скорее всего, является PRIMARY KEY), тогда разница в производительности была бы незначительной.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top