Начало » Использование СУБД » Microsoft SQL Server » Есть ли у вас идеи как лучше написать запрос, который будет меньше данных считывать? (Есть ли у вас идеи как лучше написать запрос, который будет меньше данных считывать?)
Есть ли у вас идеи как лучше написать запрос, который будет меньше данных считывать? [сообщение #4521] |
Fri, 23 February 2024 14:05 |
mak_arti
Сообщений: 1 Зарегистрирован: February 2024
|
Junior Member |
|
|
Есть одна таблица Crosses(ArticleId, CrossArticleId).
1 | 5
5 | 10
5 | 12
1 | 6
6 | 10
6 | 13
1 | 8
8 | 10
1 | 9
9 | 13
9 | 15
Сперва достаем все строки, у которых ArticleId = 1 и получаем следующие строки во временную таблицу @tempFlatCrosses(ArticleId, CrossArticleId)
1 | 5
1 | 6
1 | 8
1 | 9
Далее нужно сделать повторную выборку
select с.CrossArticleId from Crosses c
inner join @tempFlatCrosses f on c.ArticleId = f.CrossArticleId
То мы получим много дубликатов, будет считывать много лишних строков из таблицы Crosses.
10
12
10
13
10
13
15
Я понимаю что можно обойтись оператором Distinct, но все же хотелось чтобы запрос сканировал меньше данных из таблицы. Есть у вас идеи?
[Обновления: Fri, 23 February 2024 14:30] Известить модератора
|
|
|
|
|
Переход к форуму:
Текущее время: Wed Dec 18 15:35:59 GMT+3 2024
Общее время, затраченное на создание страницы: 0.07095 секунд
|