我有两个包含“任务”和“注释”的表,并且想要检索一个任务列表,以及每个任务的关联注释数。这两个查询可以完成任务:
选择t.TaskId,
(从TaskNote n中选择count(n.TaskNoteId),其中n.TaskId = t.TaskId)'注释'
从任务t
- 或者
选择t.TaskId,
count(n.TaskNoteId)'注释'
从任务t
左联接
任务说明n
在t.TaskId = n.TaskId上
按t.TaskId分组
它们之间有区别吗?我应该在一个之上使用另一个,还是它们只是完成同一工作的两种方式?谢谢。
最佳答案
在小型数据集上,当涉及性能时,它们会被淘汰。索引时,LOJ会好一些。
我发现在大型数据集上,内部联接(内部联接也将起作用。)将在很大的因素(抱歉,没有数字)方面优于子查询。
关于sql - Transact-SQL-子查询还是左联接?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/117952/