Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Warning: CardinalityEstimate  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 899
Hello world!
Есть две таблицы
CREATE TABLE [dbo].[УПП_РегистрНакопления_ТоварыНаСкладах_Движения](
	[YR] [int] NULL,
	[MN] [int] NULL,
	[Date] [date] NULL,
	[DateTime] [datetime] NULL,
	[Warehouse_Id] [binary](16) NOT NULL,
	[Product_Id] [binary](16) NOT NULL,
	[Product_Characteristic_Id] [binary](16) NOT NULL,
	[Movement_Type_Calc] [numeric](1, 0) NOT NULL,
	[ТипДвижения] [varchar](6) NOT NULL,
	[Doc_Рег_Type_Id] [binary](4) NOT NULL,
	[Doc_Рег_Id] [binary](16) NOT NULL,
	[Quantity_Calc] [numeric](20, 3) NULL,
	[Doc_Основ_Id] [varbinary](16) NOT NULL,
	[Doc_Основ_Type_Id] [varbinary](4) NOT NULL,
	[СерияНоменклатуры] [binary](16) NOT NULL
)
CREATE TABLE [tmp].[Warehouse](
	[System_Key] [int] NOT NULL,
	[Warehouse_ID] [uniqueidentifier] NOT NULL,
	[Warehouse_Code] [nchar](9) NULL,
	[Warehouse_Name] [nvarchar](50) NULL,
	[Address] [nvarchar](200) NULL,
	[Branch_ID] [uniqueidentifier] NULL
)
Хочу их соединить

	SELECT cast([Invent_Mov].[Warehouse_ID] as uniqueidentifier), * 					
	FROM
		[УПП_РегистрНакопления_ТоварыНаСкладах_Движения] AS [Invent_Mov] 
	LEFT JOIN [DWH_Staging_Area].[tmp].[Warehouse] AS Warehouse
	ON	cast([Invent_Mov].[Warehouse_ID] as uniqueidentifier) = Warehouse.[Warehouse_ID] AND
			Warehouse.System_Key = 1

Получаю, предупреждение.
20 апр 17, 11:42    [20417995]     Ответить | Цитировать Сообщить модератору
 Re: Warning: CardinalityEstimate  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 899
Yagrus2,

К сообщению приложен файл. Размер - 35Kb
20 апр 17, 11:42    [20417999]     Ответить | Цитировать Сообщить модератору
 Re: Warning: CardinalityEstimate  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 899
с чем это может быть связано?
20 апр 17, 11:43    [20418004]     Ответить | Цитировать Сообщить модератору
 Re: Warning: CardinalityEstimate  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
Yagrus2,

Вам говориться, что преобразование типов может влиять на оценку кардинальности.
Вопрос-то в чем?
20 апр 17, 11:44    [20418013]     Ответить | Цитировать Сообщить модератору
 Re: Warning: CardinalityEstimate  [new]
o-o
Guest
вопрос-то в чем?
откуда ворнинг?
из преобразования типа, поди:
cast([Invent_Mov].[Warehouse_ID] as uniqueidentifier)

самое интересное, что это все в самом ворнинге пишут
20 апр 17, 11:45    [20418025]     Ответить | Цитировать Сообщить модератору
 Re: Warning: CardinalityEstimate  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 899
SomewhereSomehow, Как этого избежать?
20 апр 17, 11:45    [20418027]     Ответить | Цитировать Сообщить модератору
 Re: Warning: CardinalityEstimate  [new]
o-o
Guest
Yagrus2
SomewhereSomehow, Как этого избежать?

поменять тип поля в таблице, как еще-то?
или наплевать на ворнинг
20 апр 17, 11:48    [20418037]     Ответить | Цитировать Сообщить модератору
 Re: Warning: CardinalityEstimate  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
o-o
самое интересное, что это все в самом ворнинге пишут

Читать это для слабаков! =)

Yagrus2
SomewhereSomehow, Как этого избежать?

Как уже было сказано, привести типы данных в порядок. Соединять по одинаковым типам.

Кстати, это предупреждение довольно "мусорное", т.е. бываю ситуации когда где-то есть преобразование, которое не влияет на оценку кардинальности, но предупреждение может возникнуть.

Хотя в вашем случае, оно прям в тему. Соединяемые таблицы лучше соединяются по столбцам одного типа.

Впрочем, если кроме ворнинга других нареканий нет, а поменять нельзя, оставьте как есть и напишите в коде комментарий, мол "потенциально проблемный запрос, лучше поменять тип данных, но не могу т.к. одно-другое-третье".
20 апр 17, 11:59    [20418093]     Ответить | Цитировать Сообщить модератору
 Re: Warning: CardinalityEstimate  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 899
SomewhereSomehow, Спасибо.
20 апр 17, 12:02    [20418101]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить