Sql server 低查询执行时间SQL server

Sql server 低查询执行时间SQL server,sql-server,Sql Server,我在sql server数据库中有此查询 SELECT [Id] ,[CreatedBy] ,[CreatedDate] ,[ModifiedBy] ,[ModifiedDate] ,[IsDeleted] ,[IsActive] ,[Type] ,[RelaseDate] ,[Prefix] ,[SubTitle] ,[Title] ,[Status] ,[Sequence] ,[Value] ,[Content] ,[Autho

我在sql server数据库中有此查询

SELECT [Id]
  ,[CreatedBy]
  ,[CreatedDate]
  ,[ModifiedBy]
  ,[ModifiedDate]
  ,[IsDeleted]
  ,[IsActive]
  ,[Type]
  ,[RelaseDate]
  ,[Prefix]
  ,[SubTitle]
  ,[Title]
  ,[Status]
  ,[Sequence]
  ,[Value]
  ,[Content]
  ,[Author]
  ,[Summery]
  ,[EndDate]
  ,[ViewedTime]
  ,[DefaultCategorieId]
  ,[URLTitle]
  ,[AlowComments]
  ,[HideImage]
  ,[ExternalLink]
FROM [SalesItem].[dbo].[Items]
where  Type='7a38bd0c-222f-4308-8dce-f7a2014d7d79' and IsDeleted <> 1
order by [CreatedDate] desc
OFFSET 10 ROWS
FETCH NEXT 20 ROWS ONLY; 
这些项有大约200000条记录。此查询的执行时间约为00:80:30

有没有办法加快查询速度。由于同一个表可能有许多不同的查询,它们需要更长的执行时间

将[Id]视为启用了标识且CreatedDate上没有索引的PK,因此您可以按[Id]排序

因为两列的顺序相同。希望您以后不会更新CreatedDate

这个查询应该更快

;with cte 
as
(
     SELECT ROW_NUMBER() over (order by [Id]) as rowid,
      ,[Id]
      ,[CreatedBy]
      ,[CreatedDate]
      ,[ModifiedBy]
      ,[ModifiedDate]
      ,[IsDeleted]
      ,[IsActive]
      ,[Type]
      ,[RelaseDate]
      ,[Prefix]
      ,[SubTitle]
      ,[Title]
      ,[Status]
      ,[Sequence]
      ,[Value]
      ,[Content]
      ,[Author]
      ,[Summery]
      ,[EndDate]
      ,[ViewedTime]
      ,[DefaultCategorieId]
      ,[URLTitle]
      ,[AlowComments]
      ,[HideImage]
      ,[ExternalLink]
    FROM [SalesItem].[dbo].[Items]
    where Type='7a38bd0c-222f-4308-8dce-f7a2014d7d79' and IsDeleted <> 1
)

select * from cte where rowid between 11 and 20

请让我知道这需要多少执行时间

这是一个事务表还是为此表应用了索引?此表没有应用索引转义Id列您需要通过标识正确的列来对此表进行索引,还可以尝试根据应用索引的Id或列编写查询。请重试在type and IsDeleted上添加NCI我希望你的意思是8分30秒,而不是8小时30分钟…你的问题中没有CreatedDate排序请阅读我的答案顶部。。我是按[id]排序的,考虑到它是启用标识的列。是的,您的查询在不到1秒的时间内执行速度快得多,并且两个查询的结果是否相同?请小心。根据ID和CreatedDate的分配方式,最终可能会出现顺序错误。在多用户环境中,事务排队并可以在分配ID的顺序或日期设置之外提交。如果你没有预料到这一点,并且依赖于这种行为,那么这是一种痛苦。它几乎会一直工作,直到它不工作为止。非常讨厌!如果ID和日期设置在数据库之外,则可能没有问题。