SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » Microsoft SQL Server » Есть ли у вас идеи как лучше написать запрос, который будет меньше данных считывать? (Есть ли у вас идеи как лучше написать запрос, который будет меньше данных считывать?)
Есть ли у вас идеи как лучше написать запрос, который будет меньше данных считывать? [сообщение #4521] Fri, 23 February 2024 14:05 Переход к следующему сообщению
mak_arti в настоящее время не в онлайне  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]

Известить модератора

Re: Есть ли у вас идеи как лучше написать запрос, который будет меньше данных считывать? [сообщение #4544 является ответом на сообщение #4521] Mon, 26 February 2024 13:44 Переход к предыдущему сообщениюПереход к следующему сообщению
BlackEric в настоящее время не в онлайне  BlackEric
Сообщений: 368
Зарегистрирован: June 2022
Senior Member
Посмотреть план запроса и настроить индексы так, что бы собственно дальше индексов чтение и не шло.
Re: Есть ли у вас идеи как лучше написать запрос, который будет меньше данных считывать? [сообщение #4954 является ответом на сообщение #4544] Tue, 23 April 2024 19:30 Переход к предыдущему сообщению
sim_84 в настоящее время не в онлайне  sim_84
Сообщений: 332
Зарегистрирован: June 2022
Senior Member
Зачем здесь вообще нужна временная таблица, да и джойн не понятно
Предыдущая тема: Sql запрос
Следующая тема: Перестал работать план обслуживания
Переход к форуму:
  


Текущее время: Wed Dec 18 15:35:59 GMT+3 2024

Общее время, затраченное на создание страницы: 0.07095 секунд