我按照以下方式创建了一个表:
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
答案 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开始。