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

Откуда:
Сообщений: 384
какой вариант лучше и почему?

declare @bIsTurn bit
set @bIsTurn = (select IsTurn from SomeTable where ID = 10)
if @bIsTurn = 1
begin
-- делаем что-то
end
else
begin
-- делаем еще что-то
end

или

if exists(select * from SomeTable where ID = 10 and IsTurn = 1)
begin
-- делаем что-то
end
else
begin
-- делаем еще что-то
end
24 июн 09, 15:40    [7338479]     Ответить | Цитировать Сообщить модератору
 Re: как лучше?  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Во как ещё можно
CREATE PROC P1 AS
/*делаем что-то*/
GO
CREATE PROC P2 AS
/*делаем что-то*/
GO
................
CREATE PROC P10 AS
/*делаем что-то*/
GO

DECLARE @Proc sysname;
SELECT @Proc=[ProcName] FROM [SomeTable] WHERE [ID]=10;
EXEC @Proc;
24 июн 09, 15:45    [7338533]     Ответить | Цитировать Сообщить модератору
 Re: как лучше?  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
в первом случае еще необходимо top 1 добавить, если ID совпадает. а то можете нарваться недай бог, если ID будет много одинаковых...
с точки зрения быстродействия, 2ой как бы не медленнее как минимум, поэтому я бы exists писал, при этом мне так больше нравится и понятнее чтоли.

для спящего время бодрствования равносильно сну
24 июн 09, 15:46    [7338547]     Ответить | Цитировать Сообщить модератору
 Re: как лучше?  [new]
temp-for-testing
Member

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

не в этом вопрос..

просто многие знакомые пишут как в первом случае, а мне больше нравится второй.. и нагляднее, и проще.. вот и думаю, есть ли разница еще в чем-то между ними..
24 июн 09, 15:48    [7338567]     Ответить | Цитировать Сообщить модератору
 Re: как лучше?  [new]
temp-for-testing
Member

Откуда:
Сообщений: 384
Алексей2003,

рассматривается случай, когда ID первичный ключ..

мне тоже exists больше нравится.. изящно выглядит..
24 июн 09, 15:49    [7338576]     Ответить | Цитировать Сообщить модератору
 Re: как лучше?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
temp-for-testing
Алексей2003,

рассматривается случай, когда ID первичный ключ..

мне тоже exists больше нравится.. изящно выглядит..

я б еще убрал * заменив на select 1
24 июн 09, 17:31    [7339520]     Ответить | Цитировать Сообщить модератору
 Re: как лучше?  [new]
iljy
Member

Откуда:
Сообщений: 8711
Maxx
temp-for-testing
Алексей2003,

рассматривается случай, когда ID первичный ключ..

мне тоже exists больше нравится.. изящно выглядит..

я б еще убрал * заменив на select 1


стилистически правильнее, но на практике все равно, планировщик игнорирует всю выдачу запроса под exists и выбирает самые узкие индексы.
24 июн 09, 17:36    [7339551]     Ответить | Цитировать Сообщить модератору
 Re: как лучше?  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
iljy
Maxx
temp-for-testing
Алексей2003,

рассматривается случай, когда ID первичный ключ..

мне тоже exists больше нравится.. изящно выглядит..

я б еще убрал * заменив на select 1


стилистически правильнее, но на практике все равно, планировщик игнорирует всю выдачу запроса под exists и выбирает самые узкие индексы.
А чем "правильнее"? И почему 1, а не 0, 2, 3.1459 или NULL, наконец?
Наоборот, обычно рекомендуют *.

Список SELECT в EXISTS() имеет значение только в случае,
если в нём есть нечто, напоминающее серверу имя колонки.
Он потребует её наличие в таблице в этом случае.
Иначе список SELECT в EXISTS() игнорируется.
24 июн 09, 17:45    [7339623]     Ответить | Цитировать Сообщить модератору
 Re: как лучше?  [new]
iljy
Member

Откуда:
Сообщений: 8711
iap
А чем "правильнее"? И почему 1, а не 0, 2, 3.1459 или NULL, наконец?
Наоборот, обычно рекомендуют *.

Список SELECT в EXISTS() имеет значение только в случае,
если в нём есть нечто, напоминающее серверу имя колонки.
Он потребует её наличие в таблице в этом случае.
Иначе список SELECT в EXISTS() игнорируется.

я встречал рекомендации именно на константу. NULL тоже можно сам обычно пишу *, ибо знаю что все равно игнорируется.
24 июн 09, 17:48    [7339644]     Ответить | Цитировать Сообщить модератору
 Re: как лучше?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
мне нравиться константа :)) 1 - отличное число.
Дело вкуса, мне так читабельней .
-------------------------------------
Jedem Das Seine
24 июн 09, 17:49    [7339659]     Ответить | Цитировать Сообщить модератору
 Re: как лучше?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36800
Maxx
мне нравиться константа :)) 1 - отличное число.
Дело вкуса, мне так читабельней .
-------------------------------------
Jedem Das Seine
А мне вот 15554458 нравится, че делать? Че делать?
24 июн 09, 17:50    [7339666]     Ответить | Цитировать Сообщить модератору
 Re: как лучше?  [new]
iljy
Member

Откуда:
Сообщений: 8711
Гавриленко Сергей Алексеевич
Maxx
мне нравиться константа :)) 1 - отличное число.
Дело вкуса, мне так читабельней .
-------------------------------------
Jedem Das Seine
А мне вот 15554458 нравится, че делать? Че делать?


писать 15554458 видимо
24 июн 09, 17:52    [7339674]     Ответить | Цитировать Сообщить модератору
 Re: как лучше?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
+ 1 :)
-------------------------------------
Jedem Das Seine
24 июн 09, 17:52    [7339679]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить