powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Получение записей интервала
7 сообщений из 7, страница 1 из 1
Получение записей интервала
    #40112510
warren82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Есть таблица с несколькими ключами (уникальный индекс по этим полям).

1. Как быстро получить Top 1000 ключей записей, начиная от некоторой записи?
2. Как быстро получить данные интервала?

По сути, 1 это получение верхней границы интервала в 1000 записей, начиная от нижней границы (если SELECT TOP 1000... обернуть в SELECT TOP 1() ORDER BY ...DESC).

Например, есть таблица Table1(Key1, Key2, Key3, Val1, Val2). Есть "границы" интервала:
(Key1=100, Key2='qwerty', Key3=124)
(Key1=100, Key2='asdfgh', Key3=356)

Сейчас запросы такие (работают очень нешустро):

1.
Код: sql
1.
2.
3.
4.
5.
SELECT TOP 1000
Key1, Key2, Key3
FROM Table1
WHERE (Key1 > 100 OR Key1 = 100 AND (Key2 > 'qwerty' OR Key2 = 'qwerty' AND (Key3 > 124)))
ORDER BY Key1, Key2, Key3



2.
Код: sql
1.
2.
3.
4.
5.
6.
SELECT
Key1, Key2, Key3, Val1, Val2
FROM Table1
WHERE (Key1 > 100 OR Key1 = 100 AND (Key2 > 'qwerty' OR Key2 = 'qwerty' AND (Key3 > 124)))
      AND NOT (Key1 > 100 OR Key1 = 100 AND (Key2 > 'asdfgh' OR Key2 = 'asdfgh' AND (Key3 > 356)))
ORDER BY Key1, Key2, Key3
...
Рейтинг: 0 / 0
Получение записей интервала
    #40112515
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Получение записей интервала
    #40112535
Oleg_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
warren82,

а с UNION не быстрее будет (избавившись от OR)
...
Рейтинг: 0 / 0
Получение записей интервала
    #40112545
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
warren82

Сейчас запросы такие (работают очень нешустро)


покажите скрипт таблицы и всех индексов
+ указать размер таблицы

а вообще, если запрос тормозит, смотрят его актуальный план и анализируют проблемные части
...
Рейтинг: 0 / 0
Получение записей интервала
    #40112556
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
warren82,

распишите все случаи OR в виде отдельных запросов.
...
Рейтинг: 0 / 0
Получение записей интервала
    #40112613
warren82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222,

Вы имеете в виду OFFSET-FETCH?

Меня скорее беспокоит второй запрос (от начальной границы до конечной). Здесь я не могу взять те же 1000 записей, потому что между 1 и 2 запросом записи в интервале могут удалиться/добавиться.
...
Рейтинг: 0 / 0
Получение записей интервала
    #40112627
andy st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
warren82,
а весь этот глум с and, or и not на between не заменить?
чтобы 2 запроса были согласованы по данным можно их делать в SNAPSHOT и двумя рекордсетами в одном батче/процедуре. и в одной транзакции
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Получение записей интервала
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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