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

Откуда:
Сообщений: 30
[quot alexeyvg]
Соколов Валерий
пропущено...

А там уж как повезёт; если они в конце таблицы, то придётся просмотреть, и проверить на условия, все записи в таблице.


Все верно. Так собственно и происходит - они в конце таблицы.
Вопрос в том есть ли варианты ускорить выборку?
29 сен 19, 21:28    [21982148]     Ответить | Цитировать Сообщить модератору
 Re: Разный план выполнения  [new]
invm
Member

Откуда: Москва
Сообщений: 8852
Соколов Валерий
Вопрос в том есть ли варианты ускорить выборку?
Варианты почти всегда есть.
Но без скриптов создания таблиц и индексов мало что можно предложить.
29 сен 19, 22:04    [21982173]     Ответить | Цитировать Сообщить модератору
 Re: Разный план выполнения  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 29621
Соколов Валерий
alexeyvg
А там уж как повезёт; если они в конце таблицы, то придётся просмотреть, и проверить на условия, все записи в таблице.


Все верно. Так собственно и происходит - они в конце таблицы.
Вопрос в том есть ли варианты ускорить выборку?
А если добавить в индексы второе поле как INCLUDE?
То есть будет
([Из города]) INCLUDE ([В город])
([В город]) INCLUDE ([Из города])

PS А запросы откуда такие?
Какое то причудливое переплетение LEGT JOIN, RIGHT JOIN, и туда беспорядочно вкраплены условия...
Не делать алиаса у [новый транзит] вообще выглядит как издевательство, как будто в компанию заслали диверсанта.
29 сен 19, 22:18    [21982181]     Ответить | Цитировать Сообщить модератору
 Re: Разный план выполнения  [new]
Gerros
Member

Откуда: Харьков
Сообщений: 480
Соколов Валерий,

а попробуйте вот такую магию:
select top 2000 [новый транзит].*
from dbo.[новый транзит] with( forceseek)
where [№ записи] in( select [№ записи] from dbo.[новый транзит] where [Из города] = 'Екатеринбург')
   or [№ записи] in( select [№ записи] from dbo.[новый транзит] where [В город] = 'Екатеринбург')
   or [№ записи] in(
select [№ записи]
from dbo.[новый транзит]
join dbo.контрагенты on [№_клиента] = [код плательщика]
where [Регион выст счетов] ='Екатеринбург')
29 сен 19, 22:43    [21982198]     Ответить | Цитировать Сообщить модератору
 Re: Разный план выполнения  [new]
Соколов Валерий
Member

Откуда:
Сообщений: 30
alexeyvg
Соколов Валерий
пропущено...


Все верно. Так собственно и происходит - они в конце таблицы.
Вопрос в том есть ли варианты ускорить выборку?
А если добавить в индексы второе поле как INCLUDE?
То есть будет
([Из города]) INCLUDE ([В город])
([В город]) INCLUDE ([Из города])

PS А запросы откуда такие?
Какое то причудливое переплетение LEGT JOIN, RIGHT JOIN, и туда беспорядочно вкраплены условия...
Не делать алиаса у [новый транзит] вообще выглядит как издевательство, как будто в компанию заслали диверсанта.


INCLUDE не помогли
1 окт 19, 22:11    [21984382]     Ответить | Цитировать Сообщить модератору
 Re: Разный план выполнения  [new]
Соколов Валерий
Member

Откуда:
Сообщений: 30
Gerros
Соколов Валерий,

а попробуйте вот такую магию:
select top 2000 [новый транзит].*
from dbo.[новый транзит] with( forceseek)
where [№ записи] in( select [№ записи] from dbo.[новый транзит] where [Из города] = 'Екатеринбург')
   or [№ записи] in( select [№ записи] from dbo.[новый транзит] where [В город] = 'Екатеринбург')
   or [№ записи] in(
select [№ записи]
from dbo.[новый транзит]
join dbo.контрагенты on [№_клиента] = [код плательщика]
where [Регион выст счетов] ='Екатеринбург')


А вот это уже гораздо лучше!
Выборка стала работать в разы быстрее!
Спасибо за совет :)
1 окт 19, 22:12    [21984383]     Ответить | Цитировать Сообщить модератору
 Re: Разный план выполнения  [new]
invm
Member

Откуда: Москва
Сообщений: 8852
Соколов Валерий
INCLUDE не помогли
И не должны были.
В вашем запросе вообще индексы по dbo.[новый транзит] бесполезны - из-за Плательщик.[Регион выст счетов] ='Екатеринбург'

Продолжайте партизанить дальше.
1 окт 19, 22:16    [21984385]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Microsoft SQL Server Ответить