如何在 SQL 中不使用“ORDER BY”进行升序排序

时间:2021-02-23 05:25:53

标签: sql sql-server

很高兴认识你

另一个程序正在使用该 SQL 加载数据, 但是DB Server超过1TB。

最后一条SQL语句使用“ORDER BY”加载时间太长 如何在SQL中没有“ORDER BY”的情况下按时间戳升序排序?

SELECT timestamp
, node
, effect_ion
, effect_value
, priority

FROM   "--(*vendor(PML),product(LogServer) Global Event Log @Global *)--"

WHERE   (timestamp >= DATEADD(DD,-6,GETDATE()))
And
(priority BETWEEN  '253' AND '255')


ORDER BY timestamp DESC

2 个答案:

答案 0 :(得分:1)

你问:

<块引用>

如何在SQL中没有“ORDER BY”的情况下按时间戳升序排序?

你没有。但是,您可以尝试添加以下索引,如果使用它,可能会让 SQL 更快地执行 ORDER BY 排序:

CREATE INDEX idx ON yourTable (priority, timestamp);

答案 1 :(得分:-2)

CLUSTER INDEXES:聚集索引定义了数据在表中的物理存储顺序。

因此,您可以根据特定列定义数据的存储顺序。

默认情况下,PRIMARY KEY 创建一个 INDEX,它导致数据以 Id (PK) 列的 ASC 顺序存储。但事实证明,这并不能保证任何排序顺序(评论中的参考链接)。

MS DOC for creation

CREATE CLUSTERED INDEX <index_name>
ON <table_name>(<column_name> ASC/DESC)

为了检查表的索引,您可以使用

EXEC sp_helpindex table_name

PS:在创建索引之前,请阅读更多内容/与团队中的某个人讨论,因为它会影响查询的性能。