|
Использование индекса с фильтрацией и сортировкой
|
|||
---|---|---|---|
#18+
Здрасте! Прошу помощи или совета. Есть таблица документов с автором, датой создания, филиалом и кучей других полей. Документов десятки миллионов. Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Для удобства восприятия: IdCreatedDateCreatorIdFilialId12021-10-19T00:17:281122021-10-19T00:17:281232021-10-19T00:17:291342021-10-19T00:17:3023 Нужно выбрать топ 1000 самых свежих документов для пользователя, если он автор документа или филиал доступен пользователю. Вот так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Возможно ли максимально быстрое выполнение запроса без полного перебора всех строк таблицы? Если нет, какие есть способы решения подобных задач? Самого быстрого результата удалось добиться только с покрывающим индексом: Код: sql 1. 2. 3.
Однако время выполнения всё равно ощутимо долго (от 15 секунд). Хотелось бы получить производительность выполнения в районе 1-2 секунд. Благодарю за любую помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2021, 03:28 |
|
Использование индекса с фильтрацией и сортировкой
|
|||
---|---|---|---|
#18+
absinthe, Код: sql 1. 2.
Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2021, 05:55 |
|
Использование индекса с фильтрацией и сортировкой
|
|||
---|---|---|---|
#18+
felix_ff absinthe, Код: sql 1. 2.
Код: sql 1. 2. 3. 4. 5. 6.
Гм... если документов многа - будет тоскливо. Надо сразу себя ограничивать... Код: sql 1. 2. 3. 4. 5. 6.
[/ ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2021, 07:00 |
|
Использование индекса с фильтрацией и сортировкой
|
|||
---|---|---|---|
#18+
Даже вот так Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2021, 07:13 |
|
Использование индекса с фильтрацией и сортировкой
|
|||
---|---|---|---|
#18+
absinthe Здрасте! Однако время выполнения всё равно ощутимо долго (от 15 секунд). Благодарю за любую помощь. Посмотрите в статистику. Может у вас документы очень большие и само чтение 1000 таких документов с диска занимает много времени. Код: sql 1. 2. 3.
INCLUDE вам тут не помогает. Надо филиал ключом делать и CreatorId тоже. А вот ID не надо, он будет и так в ключе. (CreatedDate DESC, FilialId, CreatorId) А лучше два индекса, по филиалу и создателю. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2021, 17:22 |
|
Использование индекса с фильтрацией и сортировкой
|
|||
---|---|---|---|
#18+
felix_ff Код: sql 1.
Скажите, а в данном случае сортировка будет выполняться по всему отфильтрованному набору? Нельзя ли избежать этого? У некоторых филиалов миллионы документов :( felix_ff, aleks222, Принцип понял с UNION. Меня только беспокоит полный перебор для сортировки. Но буду пробовать, спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2021, 21:16 |
|
Использование индекса с фильтрацией и сортировкой
|
|||
---|---|---|---|
#18+
absinthe felix_ff Код: sql 1.
Принцип понял с UNION. Меня только беспокоит полный перебор для сортировки. Но буду пробовать, спасибо! Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2021, 07:38 |
|
|
start [/forum/topic.php?fid=46&msg=40105299&tid=1684183]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
133ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 233ms |
0 / 0 |