在Ms sql中进行排序的最快方法
我有两个大型数据库(每个270万个条目),需要合并和排序。 按order by进行合并表排序时,会占用大量时间。 有没有其他方法可以更快地对合并表进行排序? 我已经尝试了索引,这加快了执行速度,但我正在寻找更高的速度在Ms sql中进行排序的最快方法,sql,sql-server,performance,Sql,Sql Server,Performance,我有两个大型数据库(每个270万个条目),需要合并和排序。 按order by进行合并表排序时,会占用大量时间。 有没有其他方法可以更快地对合并表进行排序? 我已经尝试了索引,这加快了执行速度,但我正在寻找更高的速度 如果有人可以帮忙的话。谢谢,这在很大程度上取决于您的实际列,但您应该尝试进一步优化此查询的索引。正确放置索引应该可以加快它的速度,但您必须意识到它仍然是一堆数据,排序在SQL Server中是一个难题 你可能想查看一些提示 在排序列[date]上设置聚集索引,以便对每个表中的数据进
如果有人可以帮忙的话。谢谢,这在很大程度上取决于您的实际列,但您应该尝试进一步优化此查询的索引。正确放置索引应该可以加快它的速度,但您必须意识到它仍然是一堆数据,排序在SQL Server中是一个难题 你可能想查看一些提示
[date]
上设置聚集索引,以便对每个表中的数据进行预排序([date],id)
的查询上创建索引视图。这将有效地创建由RDBMS引擎自动维护的合并表Select *
From table1
Inner Join table2 On table1.id=table2.id
Order By table1.[date]
table2
具有主键的id
不需要任何附加索引
表1
将受益于
CREATE CLUSTERED INDEX idx_table1_date ON table1 ([date])
INCLUDE ( ...all other fields except id which is included anyway... );
--... so that all the select data is available from the index without another lookup by PK
这将有效地创建一份按日期预先排序的
表1
。作为结果,查询将扫描idx\u table1\u date
并按主键查找table2
。何时排序?为什么您需要一次提取270万行,除非是为了转储?需要更多详细信息。在SQL中,排序成本非常高。两个问题;为什么需要对这些数据进行排序?你能在你的应用层做到这一点吗?我需要显示所有的条目在sql中对数据排序的唯一方法是使用order by。如果你有540万条记录,对它们进行排序需要时间,这是不可能的。您可能需要考虑分页,因为显示给人的记录数量是疯狂的。我的查询是:从表1中的“内部联接表2”中选择“*”。ID=表2。ID按日期DESC……我在主键(ID)上创建了聚集索引。两个表的。是否应该创建任何其他索引?日期来自哪个表?我正在对表1和表2中的数据执行内部联接。两者都包含日期列OK,但是两个不同表中具有匹配的id
的两条记录可以具有不同的date
值。你的顺序中有哪个日期
表达式?说到排序,我已经把顺序搞乱了!固定的。