我不确定这种类型的查询叫什么,所以我无法正确搜索它。我有两个表,表 A 有大约 10,000 行。表 B 具有可变数量的行。
我想编写一个查询来获取表 A 的所有结果,但添加了一个列,该列的值是一个布尔值,表示结果是否也出现在表 B 中。
我编写了这个查询,它可以工作但速度很慢,它不使用布尔值,而是使用零或一的计数。任何建议的改进都将被欣然接受:
SELECT u.number,u.name,u.deliveryaddress,
(SELECT COUNT(productUserid)
FROM ProductUser
WHERE number = u.number and productid = @ProductId)
AS IsInPromo
FROM Users u
更新
我已经在启用了实际执行计划的情况下运行了查询,我不确定如何显示结果,但各种成本是:
嵌套循环(左半连接):29%]
聚集索引扫描(用户表):41%
聚集索引扫描(ProductUser 表):29%
NUMBERS users 表中有 7366 个用户,目前 productUser 表中有 18 行(尽管这会改变,可能有数千个)