【发布时间】:2016-08-12 11:30:01
【问题描述】:
我创建一个表如下:
CREATE TABLE [dbo].[Table_10](
[Name] [nchar](10) NULL,
[Date] [datetime] NULL
)
在 [日期] 创建聚集索引后
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
【问题讨论】:
-
这适用于哪个 RDBMS?请添加标签以指定您使用的是
mysql、postgresql、sql-server、oracle还是db2- 或其他完全不同的东西。 -
添加了sql-server标签
-
按日期时间排序插入并不重要。对于 DBMS,该表仍然是一组无序的数据。
标签: sql sql-server database query-optimization