Следующий запрос на ввод занимает 7 секунд для запуска, и поскольку он выполняется несколько раз в цикле, время складывается. Мне нужна помощь, чтобы ускорить это, 90% затрат идет на кластерную вставку индекса и 10% на сканирование таблицы FN_qryPSLA().Ускорить SQL Server 2008 Вставить в запрос
INSERT INTO tblTPS (fldPK, fldDTA, fldCI, fldMN, fldMDN, fldIQ, fldSD, fldNDS, fldNIN, fldNL, fldMin, fldMax, fldUNC, fldAVA, fldBA)
SELECT fldPK, fldDTA, fldCI, fldMN, fldMDN, fldIQ, fldSD, fldNDS, fldNIN, fldNL, fldMin, fldMax, fldUNC, fldAVA, 1 AS fldBA
FROM FN_qryPSLA()
WHERE (((fldPK)= 37923) AND ((fldMN)<>-254));
Ниже FN_qryPSLA() ... Стоимость составляет 85% от Distinct Сортировать (если удалить стоимость 80% Hash Match (совокупный)) участвует
FUNCTION [dbo].[FN_qryPSLA](@PK INT)
RETURNS @tmpTblPSLA TABLE (
fldPK BIGINT NOT NULL,
fldDTA DATETIME NULL,
fldCI FLOAT NULL,
fldMN FLOAT NULL,
fldMDN FLOAT NULL,
fldIQ FLOAT NULL,
fldSD FLOAT NULL,
fldNDS BIGINT NULL,
fldNIN BIGINT NULL,
fldNL BIGINT NULL,
fldMin FLOAT NULL,
fldMax FLOAT NULL,
fldUNC VARCHAR(5) NULL,
fldAVA TINYINT NULL
)
AS
BEGIN
WITH gDPS AS
(SELECT fldPK, Max(fldDTA) AS fldDTA
FROM tblAPS
GROUP BY fldPK)
SELECT fldPK, fldDTA, fldCI, fldMN, fldMDN, fldIQ, fldSD, fldNDS, fldNIN, fldNL, fldMin, fldMax, fldUNC, fldAVA
FROM tblAPS INNER JOIN getDPS ON (tblAPS.fldDTA = gDPS.fldDTA) AND (tblAPS.fldPK = gDPS.fldPK)
GROUP BY fldPK, fldDTA, fldCI, fldMN, fldMDN, fldIQ, fldSD, fldNDS, fldNIN, fldNL, fldMin, fldMax, fldUNC, fldAVA
HAVING tblAPS.fldMN<>-254
ORDER BY tblAPS.fldPK, tblAPS.fldCI;
RETURN;
END;
Поля (2 миллиона записей в таблице выполняется запрос) кластерный индекс fldPSD ...
fldPK BIGINT NOT NULL,
fldDTA DATETIME NULL,
fldCI FLOAT NULL,
fldMN FLOAT NULL,
fldMDN FLOAT NULL,
fldIQ FLOAT NULL,
fldSD FLOAT NULL,
fldNDS BIGINT NULL,
fldNIN BIGINT NULL,
fldNL BIGINT NULL,
fldMin FLOAT NULL,
fldMax FLOAT NULL,
fldUNC VARCHAR(5) NULL,
fldAVA TINYINT NULL
Покажите нам * целое * определение 'FN_qryPSLA()'. Вы упустили заголовок определения, что очень важно для такого рода проблем с производительностью. – RBarryYoung
@RBarryYoung Я отредактировал сообщение, чтобы включить остальные функции. – codingManiac
В итоге я получил SQL, предлагающий этот индекс ... CREATE NONCLUSTERED INDEX [$ fldPKMdnInd] ON [dbo]. [TblAPS] ([fldPK], [fldMDN]) INCLUDE ([fldDTA], [fldCI], [fldMDN ], [fldIQ], [fldSD], [fldNDS], [fldNIN], [fldNL], [fldMin], [fldMax], [fldUNC], [fldAVA]) GO – codingManiac