低查询执行时间SQL服务器

时间:2015-06-11 06:30:26

标签: sql-server

我在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; 

项目有大约200,000条记录,此查询的执行时间约为00:80:30

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

1 个答案:

答案 0 :(得分:1)

[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

请告诉我这需要的执行时间