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

Коя SQL заявка е по-бърза? Филтриране по критерии за присъединяване или клауза Къде?

По отношение на производителността те са еднакви (и произвеждат едни и същи планове)

Логично трябва да направите операцията, която все още има смисъл, ако замените INNER JOIN с LEFT JOIN .

Във вашия случай това ще изглежда така:

SELECT  *
FROM    TableA a
LEFT JOIN
        TableXRef x
ON      x.TableAID = a.ID
        AND a.ID = 1
LEFT JOIN
        TableB b
ON      x.TableBID = b.ID

или това:

SELECT  *
FROM    TableA a
LEFT JOIN
        TableXRef x
ON      x.TableAID = a.ID
LEFT JOIN
        TableB b
ON      b.id = x.TableBID
WHERE   a.id = 1

Предишната заявка няма да върне действителни съвпадения за a.id различен от 1 , така че последният синтаксис (с WHERE ) е логически по-последователно.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JSON_QUERY() Примери в SQL Server (T-SQL)

  2. Използвайте DB_ID(), за да върнете идентификатора на база данни в SQL Server

  3. SQL Server Passthrough заявка като основа за набор от записи DAO в Access

  4. SQL производителност:WHERE срещу WHERE(ROW_NUMBER)

  5. Създаване на таблица на SQL Server от таблица с данни на C#