оптимизировать запрос и помочь в создании индекса - PullRequest
0 голосов
/ 09 июля 2020

У меня есть две таблицы со следующим типом данных

Таблица 1 - [sta].[Stoerungen]

CREATE TABLE [sta].[Stoerungen](
    [DWH_ID] [int] IDENTITY(1,1) NOT NULL,
    [SPS_Bereich] [nvarchar](30) NULL,
    [ID] [int] NULL,
    [DateTime] [datetime] NULL,
    [Classname] [nvarchar](255) NULL,
    [txtName] [nvarchar](255) NULL,
    [txtCame] [nvarchar](255) NULL,
    [TimeDiff] [int] NULL
) ON [PRIMARY]

Таблица 2 - [dbo].[scheduled_events_ISTProduction]

CREATE TABLE [dbo].[scheduled_events_ISTProduction](
    [event_id] [varchar](50) NOT NULL,
    [item_id] [int] NOT NULL,
    [start_date] [datetime] NULL,
    [end_date] [datetime] NULL,
    [label] [varchar](45) NULL,
    [foreground] [varchar](45) NULL,
    [background] [varchar](45) NULL,
    [lead_time] [int] NULL,
    [lead_color] [varchar](45) NULL,
    [pct_done] [int] NULL,
    [createdby] [varchar](50) NULL,
    [createdon] [datetime] NULL,
    [typ] [int] NULL,
    [timediff] [int] NULL
) ON [PRIMARY]

Я использую следующий запрос, чтобы получить 100 первых строк, что занимает около 11 секунд.

select TOP 100 T.DWH_ID,T.date_time, T.TimeDiff, T.[End Date], T.SPS_Bereich, T.txtName from (  
SELECT sto.[DWH_ID]
      ,sto.[SPS_Bereich]
      ,FORMAT(sto.[DateTime], 'dd-MM-yyyy HH:mm') as date_time
      ,sto.[txtName]
      ,sto.[TimeDiff]
      , DATEADD(second,sto.[TimeDiff],FORMAT(sto.[DateTime], 'dd-MM-yyyy HH:mm'))as [End Date]
  FROM [Stoerdaten].[sta].[Stoerungen]  sto where sto.Classname='Alarm' and sto.TimeDiff>60 ) as T

  join  [IgnitionServer].[dbo].[scheduled_events_ISTProduction] cal on 

  ((T.date_time between cal.start_date and cal.end_date) and T.[End Date] between cal.start_date and cal.end_date) where cal.typ=1 order by [DWH_ID] desc

Как я могу оптимизировать этот запрос, чтобы он работал быстрее, и какой индекс мне следует создать для лучшей производительности.

в настоящее время существует только один индекс для DWH_ID как UNIQUE CLUSTERED INDEX

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...