2014-11-17 2 views
0

Как указано в MSDN,Может SQL Server (2008R2) оптимизации Sybase Регистрация Синтаксис

http://msdn.microsoft.com/en-us/library/dd172122(v=vs.100).aspx

Sybase синтаксис объединения считается устаревшим

т.е.

SELECT [T2].[c3], [T1].[c3] 
FROM [dbo].[T2] T2, [dbo].[T1] T1 
WHERE [T2].[ID] = [T1].[ID] 

однако информация является отрывочным относительно того, способен ли движок SQL оптимизировать это или нет.

Я бы предположил, что приведенный выше пример будет одобрен, но как насчет на примере более 10 таблиц.

Насколько хорошо движок SQL Query оптимизирует эти запросы и использует внутренние и внешние соединения?

+1

Это эквивалентно «внутреннему соединению», и SQL Server оптимизирует. Это действительно очень вредная причина для использования такого синтаксиса. Простое правило: никогда не используйте запятые в предложении 'from'. –

+0

Единственным устаревшим синтаксисом является проприетарный внешний синтаксис соединения. –

ответ

0

Да, SQL Server может его оптимизировать. Я побежал как на мой экземпляр SQL Server 2012, и он дал мне один и тот же план выполнения для обоих запросов:

SELECT [T2].[c3], [T1].[c3] 
FROM [dbo].[T2] T2, [dbo].[T1] T1 
WHERE [T2].[ID] = [T1].[ID] 

и

SELECT [T2].[c3], [T1].[c3] 
FROM [dbo].[T2] T2 
INNER JOIN [dbo].[T1] T1 ON [T2].[ID] = [T1].[ID] 

SQL Server 2012 в основном имеет тот же Query Оптимизатор SQL 2008 У сервера 2014 есть новый, но я подозреваю, что это не повлияет на этот случай.

Смежные вопросы