Я унаследовал несколько источников данных, и мне поручили интеграцию и отчет. Ничего нового.Деградация и оптимизация производительности запросов SQL Server
Проблема заключается в том, что, хотя у меня есть рабочий интегрированный запрос (как вид), производительность ухудшается ежедневно (от 8 до 12 секунд).
Ниже приведена упрощенная версия схемы таблиц и рабочий запрос для получения списка билетов.
/* Table Schema */
CREATE TABLE [dbo].[KioskImport](
[ImportID] [bigint] IDENTITY(1,1) NOT NULL,
[ImportDate] [datetime] NOT NULL,
[TICKET_NBR] [varchar](25) NULL,
[TTL_AMT] [decimal](18, 2) NOT NULL,
[GROUP_ID] [varchar](15) NULL,
[SALE_DT] [date] NULL,
[SALE_TMS] [time](0) NULL,
[BADGE_NO] [varchar](25) NULL
) ON [PRIMARY]
/* Working Query */
SELECT
[KioskImport].TICKET_NBR
,[KioskImport].GROUP_ID
,[KioskImport].TTL_AMT
,CONVERT(datetime, [KioskImport].SALE_DT) + CONVERT(datetime, [KioskImport].SALE_TMS) AS [SALE_DATE]
,[KioskImport].BADGE_NO
FROM [KioskImport]
INNER JOIN
(
SELECT MAX(ImportID) MaxID, MAX(ImportDate) MaxDate, TICKET_NBR
FROM [KioskImport]
GROUP BY TICKET_NBR
) [MaxRevenueImport]
ON [MaxRevenueImport].MaxID = [KioskImport].ImportID
AND [MaxRevenueImport].MaxDate = [KioskImport].ImportDate
У меня есть представление, которое объединяет несколько запросов, подобных этому, для создания набора результатов продукта.
Есть ли у кого-нибудь хорошие рекомендации по оптимизации этого запроса, чтобы уменьшить текущую деградацию производительности (покупая достаточно времени для реорганизации ... всего).
SQL версии 2008 R2
какая версия сервера sql вы используете? – Hogan
Здесь также есть странная проблема ... вы принимаете максимальную дату и максимальный id и соединяете их обоих, но они независимы - вы уверены, что одна и та же запись содержит максимальную дату как max id - и если вы, то maxid должно быть все, что вам нужно, чтобы присоединиться, поскольку in является уникальным. – Hogan
Есть ли у вас какие-либо индексы? – SqlZim