优化查询并帮助创建索引

vmdwslir  于 2021-07-24  发布在  Java
关注(0)|答案(0)|浏览(166)

我有两个数据类型如下的表
表1- [sta].[Stoerungen] ```
CREATE TABLE [sta].[Stoerungen](
[DWH_ID] [int] IDENTITY(1,1) NOT NULL,
[SPS_Bereich] nvarchar NULL,
[ID] [int] NULL,
[DateTime] [datetime] NULL,
[Classname] nvarchar NULL,
[txtName] nvarchar NULL,
[txtCame] nvarchar 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

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题