更快地查询

时间:2016-08-12 11:30:02

标签: sql sql-server database query-optimization

我按照以下方式创建了一个表:

CREATE TABLE [dbo].[Table_10](
  [Name] [nchar](10) NULL,
  [Date] [datetime] NULL
) 

在[Date]

上创建聚簇索引之后
CREATE CLUSTERED INDEX index_name10   
ON dbo.table_10 ([Date]); 
然后

随机填充表格中的80K数据(但是在有序的日期时间内)

运行此查询并完成约1分钟

我希望它运行得更快,因为我认为嵌套查询可以在对数时间内完成。但似乎不是,我错了或怎么做得更快?

SELECT Table_10.[date], (SELECT COUNT(*) FROM 
                                       Table_10 AS t10 
                                       WITH(INDEX(index_name10))
                                       WHERE table_10.[date] < t10.[Date])

FROM table_10

1 个答案:

答案 0 :(得分:0)

您似乎正在使用SQL Server。您可以将Error: Error Domain=NSURLErrorDomain Code=-999 "(null)" UserInfo={NSErrorFailingURLStringKey=https://my-videos-bucket.s3.amazonaws.com/4074196678138134606/F17F7308-2810-4325-A5AF-BB8FFC093AC6.mov, NSURLErrorBackgroundTaskCancelledReasonKey=0, NSErrorFailingURLKey=https://my-videos-bucket.s3.amazonaws.com/4074196678138134606/F17F7308-2810-4325-A5AF-BB8FFC093AC6.mov} 用于此目的:

rank()

如果select t.*, (rank() over (order by [date]) - 1) from table_10; 没有重复项,则更明确地使用[date]

row_number()

仅需要select t.*, (row_number() over (order by [date]) - 1) from table_10; ,因为您似乎想要将编号从0开始而不是1开始。