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