Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / можно ли отменить сканирование второй таблицы в одном запросе по условию / 6 сообщений из 6, страница 1 из 1
01.02.2019, 15:57
    #39768294
SangYong
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли отменить сканирование второй таблицы в одном запросе по условию
Приветствую. Знаю как решить задачу при помощи джойнов, но тогда сканирование ShopSaleNakDet будет постоянным, даже если NR не поступил. Знаю как избежать сканирования при помощи динамического сиквела - но к запросу обращение идет каждую минуту с разных мест на обновление картинки и я хотел бы чтобы запрос был скомпилированным. Как использовать "use case in where" прогуглено давно но вопрос остался

нарисовал желаемое (мечтаемое:) - может кто поможет:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
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
) 
.....
...
Рейтинг: 0 / 0
01.02.2019, 16:04
    #39768301
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли отменить сканирование второй таблицы в одном запросе по условию
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
where 
  exists ( 
    select  * 
    from [dbo].[ShopSaleNakDet] x 
    where 
      @mode  =  'не ищем по номеру' 
      or ( NR like '00022%' and NakList.id =  x.idNak )
  )

+ почитать про Startup Predicate
...
Рейтинг: 0 / 0
01.02.2019, 16:06
    #39768302
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли отменить сканирование второй таблицы в одном запросе по условию
А, да, по NR можно построить индекс, тогда для условия like '00022%' будет возможен Index Seek.
...
Рейтинг: 0 / 0
01.02.2019, 16:16
    #39768308
SangYong
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли отменить сканирование второй таблицы в одном запросе по условию
Гавриленко Сергей Алексеевич, спсб...гляну
индекс я не захотел - это таблица с прайсами и они обновляются каждый час (от 10кило до 200кило записей) - как я засомневался в целесообразности...
...
Рейтинг: 0 / 0
01.02.2019, 16:22
    #39768319
SangYong
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли отменить сканирование второй таблицы в одном запросе по условию
Гавриленко Сергей Алексеевич, ну то что EXISTS это хорошо, а IN это не очень - это понятно...может еще какие варианты :(
...
Рейтинг: 0 / 0
01.02.2019, 17:06
    #39768363
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
можно ли отменить сканирование второй таблицы в одном запросе по условию
SangYong,

табличная функция if @a=1 select ... if @a=2 select ...
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / можно ли отменить сканирование второй таблицы в одном запросе по условию / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]