Предупреждение в плане выполнения запроса

Александр52
Дата: 23.01.2013 11:46:27
Добрый день!
При изучении плана выполнения запроса обратил внимание на знак восклицания(предупреждение).
Пишет "Нет предиката соединения."
В самом запросе предикат конечно есть:)
подскажите что это и как это предупреждение убрать и вообще насколько оно критично)
Скрин чуть ниже по ссылке:

http://clip2net.com/s/2Kccy
Добрый Э - Эх
Дата: 23.01.2013 11:48:26
не видя текста запроса трудно сказать- есть там предикат или нет...
Glory
Дата: 23.01.2013 11:50:47
Александр52
Пишет "Нет предиката соединения."
В самом запросе предикат конечно есть:)

Ага, а очень многие при сообщении сервере о некорректном синтаксисе мамой клянутся, что синтаксис у них верный.
Александр52
Дата: 23.01.2013 11:50:50
SELECT  [TableAlias].[State], [TableAlias].[CreateDate], [TableAlias].[ChangeDate], [TableAlias].[Company], [TableAlias].[CertificationAuthority], [TableAlias].[PriceECP], [TableAlias].[IsPaidClient], [TableAlias].[IsInApplicationToAct], [TableAlias].[IsPaidTP], [TableAlias].[TradePlatform], [TableAlias].[PriceSum], [TableAlias].[PriceSumUC], [TableAlias].[PriceSumAETP], [TableAlias].[Source], [TableAlias].[EcpCreateDate], [TableAlias].[EcpOwner], [TableAlias].[ContactPerson], (''+ISNULL([ALIAS_2710927543819812794].[Surname],'')+' '+ISNULL([ALIAS_2710927543819812794].[Name],'')+' '+ISNULL([ALIAS_2710927543819812794].[Fname],'')+'') AS [_ContactPerson_SurnameAlias], [TableAlias].[AuthorizedPerson], (''+ISNULL([ALIAS_9970789320202499643].[Surname],'')+' '+ISNULL([ALIAS_9970789320202499643].[Name],'')+' '+ISNULL([ALIAS_9970789320202499643].[Fname],'')+'') AS [_AuthorizedPerson_SurnameAlias], [TableAlias].[ImplementedWorkCertificate], [TableAlias].[QuerySeldon], [TableAlias].[TenderCredit], [TableAlias].[BankGuaranty], [TableAlias].[IsVisibleComSite], [TableAlias].[PriceRange], [TableAlias].[IsReissue], [TableAlias].[EcpLoadDate], [TableAlias].[Ads], [TableAlias].[GovOrder], [TableAlias].[ResponsibleUser], [TableAlias].[SourceType], [TableAlias].[EcpRequestDestinationTypes], [TableAlias].[DocumentOwner], [TableAlias].[ID] FROM  dbo.[Custom_EcpRequestTable]  AS TableAlias  with(NOLOCK)
LEFT JOIN dbo.[PersonTable] AS ALIAS_2710927543819812794 ON [TableAlias].[ContactPerson] = [ALIAS_2710927543819812794].[ID]
LEFT JOIN dbo.[PersonTable] AS ALIAS_9970789320202499643 ON [TableAlias].[AuthorizedPerson] = [ALIAS_9970789320202499643].[ID]
LEFT JOIN dbo.[UserTable] AS ALIAS_15718268973866606336 ON [TableAlias].[DocumentOwner] = [ALIAS_15718268973866606336].[ID]
LEFT JOIN dbo.Role2Rekursive(1) AS ALIAS_189350526785979260 ON [ALIAS_15718268973866606336].[Role2] = [ALIAS_189350526785979260].[ID]
JOIN dbo.UserRekursive(8666) AS ALIAS_9682147205914726017 ON [ALIAS_15718268973866606336].[ID] = [ALIAS_9682147205914726017].[ID]
LEFT JOIN
(
SELECT  Distinct TOP 999999999  [ALIAS_10740845074870805481].[CustomObjectID] FROM  dbo.[CustomObjectHistoryTable]  AS ALIAS_10740845074870805481  with(NOLOCK)
JOIN dbo.[CustomObjectMetaDataTable] AS ALIAS_7827747817943929496 ON [ALIAS_10740845074870805481].[MetaDataID] = [ALIAS_7827747817943929496].[ID]
LEFT JOIN dbo.[UserTable] AS ALIAS_12771998885076067577 ON [ALIAS_10740845074870805481].[DocOwnerID] = [ALIAS_12771998885076067577].[ID]
JOIN dbo.Role2Rekursive(1) AS ALIAS_189350526785979260 ON [ALIAS_12771998885076067577].[Role2] = [ALIAS_189350526785979260].[ID]
WHERE ( ([ALIAS_7827747817943929496].[Name] = 'EcpRequest') )
)
AS ALIAS_10740845074870805481 ON [TableAlias].[ID] = [ALIAS_10740845074870805481].[CustomObjectID]
WHERE ( (([ALIAS_10740845074870805481].[CustomObjectID] IS NOT NULL) OR ([ALIAS_189350526785979260].[ID] IS NOT NULL)) )
Гость333
Дата: 23.01.2013 12:48:30
Александр52,

Оптимизатор решил сделать join (логический оператор "внутреннее соединение" в плане запроса) между записями из таблицы CustomObjectHistoryTable и записями из таблицы UserTable (конечно, берутся не все подряд записи таблиц, а отобранные по фильтру). В итоге получился Cross join — потому что между этими таблицами действительно нет предиката соединения. О чём и было выдано предупреждение.

Если скорость запроса вас устраивает, то ничего делать не надо.
Mind
Дата: 23.01.2013 22:40:10
Александр52,

WHERE ( (([ALIAS_10740845074870805481].[CustomObjectID] IS NOT NULL) OR ([ALIAS_189350526785979260].[ID] IS NOT NULL)) )
Вот этот OR может быть проблемой.