2015-10-08 1 views
0

Я знаю, что есть похожие вопросы, плавающие вокруг (например, SQL Filter criteria in join criteria or where clause which is more efficient), но, как я помню, SQL функции являются особенными. Может быть? Итак, в основном, что является более правильным/более эффективным?Что вернее с функциями SQL, Join или in Where?

SELECT * 
    FROM [DBOne].[dbo].[SomeData] SD 
    INNER JOIN [DBTwo].[DBOne].[SomeOtherData_GetALL]() SOD ON SD.[DataID] = SOD.[DataID] 

ИЛИ

SELECT * 
    FROM [DBOne].[dbo].[SomeData] SD 
    WHERE SD.[DataID] IN (SELECT [DataID] FROM [DBTwo].[DBOne].[SomeOtherData_GetALL]()) 
+1

Ваши 2 запроса не являются эквивалентными. Вы сравниваете яблоки и апельсины. – sstan

+0

Что касается вашего конкретного примера кода - нет, функции таблицы ничего особенного или другого. –

+0

Как так? Я предполагаю вместо 'Left Join',' Inner Join' ... –

ответ

1

Обычно я использую WHERE EXISTS вместо соединения. См. here для пояснения.

0

В основном это как спрашивать JOIN против SUB QUERY, если вы озабоченность в связи с исполнением, я предлагаю использовать JOIN вместо того, чтобы использовать WHERE IN положение, вы можете увидеть разницу производительность, если вы используете план выполнения SQL.

Для дальнейшего понимания, вы можете прочитать этот пост: Join vs. sub-query

Надежда эта помощь.

+0

Если это правда, тогда вы получите галочку ... но кажется, что люди говорят, что это неважно ... вы уверены в этом? –

+0

Фактически использование 'SUB QUERY' является простым и простым способом, но, как и то, что я сказал, если ваша проблема связана с самой производительностью, я уверен, что лучше использовать базу JOIN для моего опыта работы с SQL. Если вы хотите протестировать, вы можете использовать план выполнения SQL для проверки. – Japongskie