У меня проблема с выбором из таблицы. Я бегу следующий запрос:Выбирать с помощью группы занимает длительное время
DECLARE @FactId nvarchar (MAX)
set @FactId = '2379233,2379237,2379244,2379246,2379249,2379250,2379254,2379255,2379257,2379260,2379262,2379264,2379266,2379268,2379270,2379276,2379279,2379284,2379285,2379293,2379294,2379298,2379300,2379305,2379308,2379310,2379313';
BEGIN
SELECT
(apd.USS) as USS, (apd.Area) as Area, P.[Description]
FROM
[gisoo].AdministrationPileDetail apd
INNER JOIN
[gisoo].Locality L on L.LocalityId = apd.LocalityId
INNER JOIN
[gisoo].Province P on P.CountryId = L.CountryId AND P.Provinceid = L.ProvinceId
WHERE
apd.FactId IN (SELECT * FROM [gisoo].[ItemListToTable](@FactId))
AND L.ProvinceId IS NOT NULL
AND L.DepartmentId IS NOT NULL
END
GO
Этот выбор делит nvarchar
(@FactId
) в таблицу со всеми отделенной ID:
SELECT *
FROM [gisoo].[ItemListToTable](@FactId)
Запрос имеет 12000 строк, и это занимает две секунды, но когда я запускаю группу, она занимает 40 секунд.
DECLARE @FactId nvarchar (MAX)
set @FactId = '2379233,2379237,2379244,2379246,2379249,2379250,2379254,2379255,2379257,2379260,2379262,2379264,2379266,2379268,2379270,2379276,2379279,2379284,2379285,2379293,2379294,2379298,2379300,2379305,2379308,2379310,2379313';
BEGIN
SELECT
SUM(apd.USS) AS USS,
SUM(apd.Area) AS Area,
P.[Description]
FROM
[gisoo].AdministrationPileDetail apd
INNER JOIN
[gisoo].Locality L ON L.LocalityId = apd.LocalityId
INNER JOIN
[gisoo].Province P ON P.CountryId = L.CountryId AND P.Provinceid = L.ProvinceId
WHERE
apd.FactId IN (SELECT * FROM [gisoo].[ItemListToTable](@FactId))
AND L.ProvinceId IS NOT NULL
AND L.DepartmentId IS NOT NULL
GROUP BY
P.[Description]
END
GO
Обе таблицы не имеют индексов.
Я использую SQL Server 2008 R2 и запрос Она также была протестирована в SQL Server 2012.
Какой тип колонка описания? Вы выполнили план запроса? Вы пытались индексировать столбец описания? – Juan
описание char (30) null. Я проверяю план и говорю, что я могу оптимизировать только 30% с помощью индекса. Остается много времени на мой запрос. провинция стола, где описание данных извлечения имеет только 71 строку. –
Наконец, заполните группу приложением, ответ был всего 3 секунды. Я не нашел свою проблему в SQL-запросе –