Что является лучшим, чтобы проверить, существует ли объект или нет: Выбрать количество (идентификатор) ИЛИ Существовать (…)?

Что является лучшим в производительности к решительному, если объект существует или не особенно, если таблица содержит больше чем 700 000 строк

if (Select count(id) from Registeration where email='email@w.cn') > 0
    print 'Exist'
else
    print 'Not Exist'

ИЛИ

if Exists(Select id from Registeration where email='email@w.cn') 
    print 'Exist'
else
    print 'Not Exist'
16
задан gbn 18 July 2010 в 12:36
поделиться

2 ответа

EXISTS, всегда

  • COUNT будет обходить таблицу или индекс: вы просили COUNT
  • EXISTS остановится, как только найдет строку

Редактировать, чтобы было понятно

Конечно, в этом случае, если столбец email уникален и индексирован, это будет близко.

Вообще, EXISTS использует меньше ресурсов и более корректен. Вы ищете существование строки, а не "больше нуля", даже если они одинаковые

Edit2: В EXISTS вы можете использовать NULL, 1, ID или даже 1/0: это не проверяется...

21 мая 2011 редактировать:

Похоже, что это было оптимизировано в SQL Server 2005+, так что COUNT теперь то же самое, что EXISTS в этом случае

28
ответ дан 30 November 2019 в 17:27
поделиться

также примите во внимание, что Count() возвращает только int, и если вы посчитаете некоторые данные, которые превышают int, это приведет к ошибке

4
ответ дан 30 November 2019 в 17:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: