【发布时间】:2012-07-25 03:48:09
【问题描述】:
我在合理的时间内从包含 2M 行的表中获取前 100 行时遇到问题。 问题是按部分排序,此查询需要 50 多分钟才能得到结果。 这个问题的最佳解决方案是什么?
select top 100 * from THETABLE TT
Inner join SecondTable ST on TT.TypeID = ST.TypeID
ORDER BY DATEDIFF(Day, TT.LastCheckDate, GETDATE()) * ST.SomeParam DESC
非常感谢,
奔腾
编辑: * TheTable 是具有 2M 行的表。 * SomeParam 有 15 个不同的值(或多或少)
【问题讨论】:
-
MySQL ? SQL 服务器?另外,向我们展示结构和数据类型!
-
哎哟。 ORDER BY 子句有效地阻止了索引的使用。
-
有多少不同的 ST.SomeParam 值?
-
哪个表大? TT,ST,或两者兼而有之?另外,SomeParam 多久更改一次?
-
THETABLE TT 是 2M 行的表。 SomeParam 每月更改一次。 SomeParam 有大约 10-20 个不同的值,而且不会超过这个值。
标签: sql-server performance sql-order-by datediff