Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Mengapa urutan klausa gabungan memengaruhi rencana kueri di SQL Server?

Saya harus tidak setuju dengan semua jawaban sebelumnya, dan alasannya sederhana:jika Anda mengubah urutan gabungan kiri Anda, kueri Anda secara logis berbeda dan karena itu mereka menghasilkan set hasil yang berbeda. Lihat sendiri:

SELECT 1 AS a INTO #t1
UNION ALL SELECT 2
UNION ALL SELECT 3
UNION ALL SELECT 4;

SELECT 1 AS b INTO #t2
UNION ALL SELECT 2;

SELECT 1 AS c INTO #t3
UNION ALL SELECT 3;

SELECT a, b, c 
FROM #t1 LEFT JOIN #t2 ON #t1.a=#t2.b
  LEFT JOIN #t3 ON #t2.b=#t3.c
ORDER BY a;

SELECT a, b, c 
FROM #t1 LEFT JOIN #t3 ON #t1.a=#t3.c
  LEFT JOIN #t2 ON #t3.c=#t2.b
ORDER BY a;

a           b           c
----------- ----------- -----------
1           1           1
2           2           NULL
3           NULL        NULL
4           NULL        NULL

(4 row(s) affected)

a           b           c
----------- ----------- -----------
1           1           1
2           NULL        NULL
3           NULL        3
4           NULL        NULL


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. INSERT INTO TABLE dari varchar-list yang dipisahkan koma

  2. SQL SERVER - Memahami cara kerja MIN(teks)

  3. Kesalahan:Harus mendeklarasikan variabel skalar untuk menyisipkan pernyataan di banyak basis data

  4. Penggantian rekursif dari tabel karakter

  5. Dapatkan ukuran semua tabel di database