SQL Server: выберите в vs или?

19

Что быстрее?

SELECT UserName
FROM dbo.UserTable
WHERE UserID in (1,3,4)
SELECT UserName
FROM dbo.UserTable
WHERE UserID = 1 
      OR UserID = 3
      OR UserID = 4
    
задан ctrlShiftBryan 21.01.2010 в 17:07
источник
  • stackoverflow.com/questions/3074713/... –  rdo 18.04.2014 в 09:54

3 ответа

24

Благодаря оптимизации запросов Sql Server они будут работать с одинаковой скоростью, поскольку они логически эквивалентны.

Я предпочитаю синтаксис IN для краткости и удобочитаемости.

    
ответ дан Paul Sasik 21.01.2010 в 17:11
  • Скорее, тогда Or / In есть способ запроса? что будет работать быстрее? –  Worgon 11.06.2013 в 08:33
  • @Worgon, если количество значений велико, вы можете поместить отдельные значения в индексированную таблицу темп и присоединиться к этому. –  Martin Smith 13.09.2014 в 21:18
7

На самом деле это одно и то же.

Если вы покажете оценочный план выполнения, вы увидите, что он выполняет одно и то же действие.

    
ответ дан David Espart 21.01.2010 в 17:13
-1

Это актуально, когда дело доходит до создания SQL через Linq. Есть несколько примеров, когда созданный sql имеет вид: field = 'xxx' OR field = 'yyy'.     

ответ дан Herbey Zepeda 30.04.2013 в 20:46
  • Можете ли вы прояснить это? Я понятия не имею, что вы говорите. –  tbodt 14.09.2014 в 00:18