Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Есть ли разница в запросах  [new]
_ч_
Member

Откуда:
Сообщений: 1427
Интереса ради, есть ли разница в написании условий?

IF EXISTS(SELECT * FROM table)
SELECT 1


IF EXISTS(SELECT 1 FROM table)
SELECT 1
8 май 13, 13:45    [14273452]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли разница в запросах  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
План же.
8 май 13, 13:49    [14273501]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли разница в запросах  [new]
Glory
Member

Откуда:
Сообщений: 104760
_ч_
Интереса ради, есть ли разница в написании условий?

В _написании_ разница есть
8 май 13, 13:50    [14273508]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли разница в запросах  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
_ч_,

BOL->

When a subquery is introduced with the keyword EXISTS, the subquery functions as an existence test. The WHERE clause of the outer query tests whether the rows that are returned by the subquery exist. The subquery does not actually produce any data; it returns a value of TRUE or FALSE.

Notice that subqueries that are introduced with EXISTS are a bit different from other subqueries in the following ways:

  • The keyword EXISTS is not preceded by a column name, constant, or other expression.
  • The select list of a subquery introduced by EXISTS almost always consists of an asterisk (*). There is no reason to list column names because you are just testing whether rows that meet the conditions specified in the subquery exist.
  • 8 май 13, 13:53    [14273535]     Ответить | Цитировать Сообщить модератору
     Re: Есть ли разница в запросах  [new]
    _ч_
    Member

    Откуда:
    Сообщений: 1427
    Всем спасибо за ответ
    8 май 13, 13:55    [14273554]     Ответить | Цитировать Сообщить модератору
     Re: Есть ли разница в запросах  [new]
    iap
    Member

    Откуда: Москва
    Сообщений: 47001
    Если на какое-нибудь поле в * прав нет, то как раз разница и проявится.
    А для 1 никакие права не проверяются.

    Может, конечно, это баг и его исправили?
    8 май 13, 14:06    [14273678]     Ответить | Цитировать Сообщить модератору
     Re: Есть ли разница в запросах  [new]
    invm
    Member

    Откуда: Москва
    Сообщений: 9413
    iap
    А для 1 никакие права не проверяются.
    Проверяются.
    8 май 13, 14:18    [14273783]     Ответить | Цитировать Сообщить модератору
     Re: Есть ли разница в запросах  [new]
    iap
    Member

    Откуда: Москва
    Сообщений: 47001
    invm
    iap
    А для 1 никакие права не проверяются.
    Проверяются.
    Для полей, явно указанных в ON и WHERE?
    Ну, это-то разумеется. А для прочих полей нет? Или я опять ошибаюсь?
    8 май 13, 14:30    [14273900]     Ответить | Цитировать Сообщить модератору
     Re: Есть ли разница в запросах  [new]
    _ч_
    Member

    Откуда:
    Сообщений: 1427
    iap
    Если на какое-нибудь поле в * прав нет, то как раз разница и проявится.
    А для 1 никакие права не проверяются.

    Может, конечно, это баг и его исправили?


    Если это правда, то это уже интересно
    8 май 13, 14:39    [14273977]     Ответить | Цитировать Сообщить модератору
     Re: Есть ли разница в запросах  [new]
    iap
    Member

    Откуда: Москва
    Сообщений: 47001
    _ч_
    iap
    Если на какое-нибудь поле в * прав нет, то как раз разница и проявится.
    А для 1 никакие права не проверяются.

    Может, конечно, это баг и его исправили?


    Если это правда, то это уже интересно
    Проверить-то несложно в принципе.
    Я сейчас не могу
    8 май 13, 14:42    [14274010]     Ответить | Цитировать Сообщить модератору
     Re: Есть ли разница в запросах  [new]
    Mnior
    Member

    Откуда: Кишинёв
    Сообщений: 6723
    _ч_
    Если это правда, то это уже интересно
    На самом деле нет. Права проверяются.
    И лучше не пользоваться багами и костылями.
    Ой мы накатили сервис пак и 1050 запросов перестали правильно работать. Давайте откатим, и фиг с тем что он пофиксил критичный баг, будем сервер перезагружать каждую неделю.
    8 май 13, 14:46    [14274047]     Ответить | Цитировать Сообщить модератору
     Re: Есть ли разница в запросах  [new]
    daw
    Member

    Откуда: Муром -> Москва
    Сообщений: 7381
    > А для прочих полей нет? Или я опять ошибаюсь?

    как ни странно, для всех столбцов таблицы вообще. как для *.
    8 май 13, 14:48    [14274061]     Ответить | Цитировать Сообщить модератору
     Re: Есть ли разница в запросах  [new]
    iap
    Member

    Откуда: Москва
    Сообщений: 47001
    daw
    > А для прочих полей нет? Или я опять ошибаюсь?

    как ни странно, для всех столбцов таблицы вообще. как для *.
    Спасибо.
    8 май 13, 14:49    [14274072]     Ответить | Цитировать Сообщить модератору
     Re: Есть ли разница в запросах  [new]
    daw
    Member

    Откуда: Муром -> Москва
    Сообщений: 7381
    вот если конкретные столбцы указать, то да - права только на них будут проверены.
    8 май 13, 14:49    [14274075]     Ответить | Цитировать Сообщить модератору
     Re: Есть ли разница в запросах  [new]
    Mnior
    Member

    Откуда: Кишинёв
    Сообщений: 6723
    13123097
    8 май 13, 14:57    [14274140]     Ответить | Цитировать Сообщить модератору
     Re: Есть ли разница в запросах  [new]
    _ч_
    Member

    Откуда:
    Сообщений: 1427
    Mnior,

    Mnior
    Mind
    можно хоть * воткнуть
    Лучше так
    Exists(SELECT 1/0 FROM ...
    

    Вправляет моск, после того как встречаешь это в рабочем коде.


    8 май 13, 15:02    [14274183]     Ответить | Цитировать Сообщить модератору
    Все форумы / Microsoft SQL Server Ответить