1
我使用SQL Server 2008 R2。我创建了一个临时表,并用1000行填充我的临时表。由于预计行数不好,SQL Server使用嵌套循环
Create Table #Temp
(
ID Int,
res INT
)
Insert Into #Temp
VALUES (10004, 2246), (10005, 2246), (10006, 2246), (10007, 2246),
(10008, 2246), (10009, 2246), (10010, 2246), (10011, 2246),
(10013, 2246), (10014, 2246), (10015, 2246), (10016, 2246),
(10017, 2246), (10018, 2246), (10019, 2246), (10020, 2246),
(10021, 2246), ................
我有另一个表名为Item
。它有大约30000条记录。
我有一个INNER JOIN
Item
和我的临时表。
Select
*
From
Inventory.Item
Inner Join
#Temp On (#Temp.ID = item.MasterID And MRes = ExRestaurantID)
正如你可以在下面三张图片看,SQL服务器已经创建了一个执行计划为我的查询,但在他的计划中,估计,我Item
表只有一个行的,因为它使用了嵌套循环加入。
剂量人知道为什么SQL Server有预期的项目表只是一个行?
它估计扫描将返回1000行1次,并估计搜索将返回1行1000次。两个估计都是正确的。 – GSerg