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

Откуда:
Сообщений: 647
Приветствую. Знаю как решить задачу при помощи джойнов, но тогда сканирование ShopSaleNakDet будет постоянным, даже если NR не поступил. Знаю как избежать сканирования при помощи динамического сиквела - но к запросу обращение идет каждую минуту с разных мест на обновление картинки и я хотел бы чтобы запрос был скомпилированным. Как использовать "use case in where" прогуглено давно но вопрос остался

нарисовал желаемое (мечтаемое:) - может кто поможет:
With Records as 
(

select NakList.* from [dbo].[ShopSaleNakList] NakList 

 WHERE 
 (
      case when @mode  =  'ищем по номеру' then 
    	       NakList.id in (select idNak from [dbo].[ShopSaleNakDet] where NR like '00022%')
             when @mode  =  'не ищем по номеру' then
               не сканируем [dbo].[ShopSaleNakDet] 

      end
) 
.....
1 фев 19, 15:57    [21799855]     Ответить | Цитировать Сообщить модератору
 Re: можно ли отменить сканирование второй таблицы в одном запросе по условию  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36694
where 
  exists ( 
    select  * 
    from [dbo].[ShopSaleNakDet] x 
    where 
      @mode  =  'не ищем по номеру' 
      or ( NR like '00022%' and NakList.id =  x.idNak )
  )
+ почитать про Startup Predicate
1 фев 19, 16:04    [21799863]     Ответить | Цитировать Сообщить модератору
 Re: можно ли отменить сканирование второй таблицы в одном запросе по условию  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36694
А, да, по NR можно построить индекс, тогда для условия like '00022%' будет возможен Index Seek.
1 фев 19, 16:06    [21799864]     Ответить | Цитировать Сообщить модератору
 Re: можно ли отменить сканирование второй таблицы в одном запросе по условию  [new]
SangYong
Member [скрыт]

Откуда:
Сообщений: 647
Гавриленко Сергей Алексеевич, спсб...гляну
индекс я не захотел - это таблица с прайсами и они обновляются каждый час (от 10кило до 200кило записей) - как я засомневался в целесообразности...
1 фев 19, 16:16    [21799874]     Ответить | Цитировать Сообщить модератору
 Re: можно ли отменить сканирование второй таблицы в одном запросе по условию  [new]
SangYong
Member [скрыт]

Откуда:
Сообщений: 647
Гавриленко Сергей Алексеевич, ну то что EXISTS это хорошо, а IN это не очень - это понятно...может еще какие варианты :(
1 фев 19, 16:22    [21799888]     Ответить | Цитировать Сообщить модератору
 Re: можно ли отменить сканирование второй таблицы в одном запросе по условию  [new]
Владислав Колосов
Member

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

табличная функция if @a=1 select ... if @a=2 select ...
1 фев 19, 17:06    [21799949]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить