powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Оптимизировать запрос
11 сообщений из 11, страница 1 из 1
Оптимизировать запрос
    #39930534
Фотография vah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скажите пожалуйста,
есть запрос

Код: sql
1.
2.
select * from T1
where T1.D1>T1.D2



D1 и D2 - даты Datetime

Таблица очень большая и такой запрос отрабатывает очень долго.

Скажите пожалуйста, как можно оптимизировать такой запрос?

может в несколько этапов, через временные таблицы с сортировкой...?

Заранее благодарен.
...
Рейтинг: 0 / 0
Оптимизировать запрос
    #39930561
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а) вычисляемый столбец + индекс по нему. Не факт, что поможет если строк, где T1.D1>T1.D2, много, относительно общего числа строк.
б) индексированное представление с полным набором столбцов
...
Рейтинг: 0 / 0
Оптимизировать запрос
    #39930570
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vah,

если в результат попадает большое количество записей, то ускорить можно только "железом".
...
Рейтинг: 0 / 0
Оптимизировать запрос
    #39930576
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vah,

А что Индекс по (D1, D2) тут не поможет?

Или Поле CAST(IIF(D1>D2, 1, 0) AS BIT) AS PERSISTED и индекс на него.
...
Рейтинг: 0 / 0
Оптимизировать запрос
    #39930723
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yep если данных очень много, то иногда "оптимизировать" лучше всего при вставке например вычисляемым полем
...
Рейтинг: 0 / 0
Оптимизировать запрос
    #39930728
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voronin,

авторА что Индекс по (D1, D2) тут не поможет?
не смог придумать как это будет работать для D1> D2
...
Рейтинг: 0 / 0
Оптимизировать запрос
    #39930731
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK
a_voronin,

авторА что Индекс по (D1, D2) тут не поможет?

не смог придумать как это будет работать для D1> D2Скорее, индекс D1 INCLUDE D2
Хотя бы будет сканить индекс, а не всю таблицу.

Хотя, конечно, индекс по вычисляемому полу лучше.
...
Рейтинг: 0 / 0
Оптимизировать запрос
    #39930819
Фотография vah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg,

Спасибо.
А надо делать два индекса или один?


Код: sql
1.
CREATE INDEX ii ON #T(D1,D2);


или
Код: sql
1.
2.
CREATE INDEX ii1 ON #T(D1);
CREATE INDEX ii2 ON #T(D2);


?
...
Рейтинг: 0 / 0
Оптимизировать запрос
    #39930824
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vah
alexeyvg,

Спасибо.
А надо делать два индекса или один?


Код: sql
1.
CREATE INDEX ii ON #T(D1,D2);



или
Код: sql
1.
2.
CREATE INDEX ii1 ON #T(D1);
CREATE INDEX ii2 ON #T(D2);



?
Я же написал - INCLUDE

Один индекс:
Код: sql
1.
CREATE INDEX ii ON #T(D1) INCLUDE(D2);
...
Рейтинг: 0 / 0
Оптимизировать запрос
    #39930825
Remind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vah
Таблица очень большая

Columnstore index, если строк удовлетворяющих условию D1 > D2 много.
...
Рейтинг: 0 / 0
Оптимизировать запрос
    #39930829
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg
Я же написал - INCLUDE

Один индекс:
Код: sql
1.
CREATE INDEX ii ON #T(D1) INCLUDE(D2);

Эффективность будет зависеть от того, насколько широкая таблица, и можно ли обойтись вместо * в запросе минимумом полей.

Иначе только вычисляемое поле.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Оптимизировать запрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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