使用SQL Server 2008 R2 哪一個更好(更快,更少的中間表,更少的內存使用量)和慣例?使用內聯查詢或連接從另一個表中獲取數據?
SELECT staff.id, staff.name, details.address, salary.hourly_rate,
manager.name, boss.name
FROM STAFF_TABLE staff
LEFT JOIN STAFF_DETAILS_TABLE details on staff.id = details.id
LEFT JOIN STAFF_SALARY_TABLE salary on staff.id = salary.id
LEFT JOIN STAFF_TABLE manager on staff.manager_id = manager.id
LEFT JOIN STAFF_TABLE boss on staff.boss_id = boss.id
或
SELECT staff.id, staff.name,
(SELECT address FROM STAFF_DETAILS_TABLE id = staff.id) [address],
(SELECT hourly_rate FROM STAFF_SALARY_TABLE WHERE id = staff.id) [hourly_rate],
(SELECT name FROM STAFF_TABLE WHERE id = staff.manager_id) [manager_name],
(SELECT name FROM STAFF_TABLE WHERE id = staff.boss_id) [boss_name]
FROM STAFF_TABLE staff
謝謝!
通常情況下,查詢優化器將切入這兩者,以提供相同的查詢執行計劃。檢查計劃並查看它們是否相同,如果是這樣,則表現不存在性能差異。 –