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

Откуда:
Сообщений: 517
День добрый!
Помогите плиз,
Существует запрос:

if exists (select * from tblTest where c1=10 and c2=50)
begin
insert into tblTest ...
update tblTest ...
...
end


Возможно ли изменить запрос, чтоб повысить производительность или так нормально?
Иммется в виду именение if exists.

Спасибо!
28 авг 12, 00:07    [13073052]     Ответить | Цитировать Сообщить модератору
 Re: If exists... и сотоварищи, как лучше?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37147
merge?
28 авг 12, 00:19    [13073087]     Ответить | Цитировать Сообщить модератору
 Re: If exists... и сотоварищи, как лучше?  [new]
abrashka
Member

Откуда:
Сообщений: 517
нет, вопрос не такой глубокий :) в теле IF-a может выполнятся обычный селект, не связанный с условием, например:
if exists (select * from tblTest where c1=10 and c2=50)
begin
select * from tblXXX
end
28 авг 12, 01:05    [13073197]     Ответить | Цитировать Сообщить модератору
 Re: If exists... и сотоварищи, как лучше?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37147
Это шутки такие?
28 авг 12, 01:28    [13073220]     Ответить | Цитировать Сообщить модератору
 Re: If exists... и сотоварищи, как лучше?  [new]
abrashka
Member

Откуда:
Сообщений: 517
Гавриленко Сергей Алексеевич,

почему шутки? Я упростил до минимума задачу, интересует есть ли замена условию
if exists(select * from tblTest where c1=10 and c2=50)

Например
if (select count(*) from tblTest where c1=10 and c2=50)>0


или для конкретного примера:

if select c1*100+c2=1050
begin
...
end



Что будет работает продуктивней?
Я понимаю, что это мелочь и на производительность системы не влияет, но хотелось бы узнать как "правильно" выполнить такое задание
28 авг 12, 01:54    [13073250]     Ответить | Цитировать Сообщить модератору
 Re: If exists... и сотоварищи, как лучше?  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
abrashka,

при наличии нужных индексов вариант if exists (select * from tblTest where c1=10 and c2=50) будет наиболее производительным
остальные предложенные вами варианты будут хуже
28 авг 12, 02:25    [13073287]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить