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

Apakah terlalu banyak Left Joins berbau kode?

Ini adalah solusi yang sah untuk beberapa desain.

Katakanlah Anda memiliki hierarki hubungan satu-ke-banyak seperti Customer - Order - Basket - Item - Price , dll., yang tidak dapat diisi pada level apa pun:Customer mungkin tidak memiliki Orders , sebuah Orders tidak boleh memiliki Basket , dll.

Dalam hal ini Anda mengeluarkan sesuatu seperti:

SELECT  *
FROM    Customer c
LEFT OUTER JOIN
        Order o
ON      o.CustomerID = c.ID
LEFT OUTER JOIN
        Basket b
ON      b.OrderID = c.ID
…

Perhatikan bahwa dalam beberapa kasus mungkin tidak efisien, dan dapat diganti dengan EXISTS atau NOT EXISTS (jika Anda hanya ingin mengetahui bahwa catatan yang sesuai ada atau tidak ada di tabel lain).

Lihat artikel ini di blog saya untuk detail kinerja:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. bagaimana cara mengatur nilai kolom sama dengan no baris?

  2. Simpan array di SQL Server 2008

  3. Bagaimana saya bisa menarik daftar ID dari tabel SQL sebagai string nilai yang dipisahkan koma?

  4. Pengaturan SMO ConnectionContext.StatementTimeout diabaikan

  5. Pilih contoh pertama dari sebuah catatan