Я использую SQL Server 2008 R2. Я создал временную таблицу, и я заполняю таблицу temp 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 Server создает план выполнения моего запроса, но в своем плане, он подсчитал, что мой Item
таблица имеет только одну строку и из-за того, что он использовал вложенными Петли соединяются.
Дозы Кто-нибудь знает, почему SQL Server ожидал только один строки для таблицы Item?
По оценкам, сканирование вернет 1000 строк 1 раз, и, по его оценке, поиск вернет 1 строку 1000 раз. Обе оценки были правильными. – GSerg