首页 > 解决方案 > 按日期排序很慢

问题描述

此查询需要 200 毫秒:

SELECT Date1, Date2 from Table1
ORDER BY Date1 

如果我按 Date2 订购,它也一样,速度很快,需要 200 毫秒。

Date1 是 DateTime 不为空

Date2 是 DateTime 空

Date3 是 DateTime 空

Date1 上有索引,Date2 上有另一个索引。该表有 150 000 条记录。

如果我按 CASE 语句订购,则需要 1.5 秒。

        SELECT 
    DateCase = 
    CASE 
    WHEN (Date1 IS NULL and Date2 IS NULL) THEN Date3
    CASE
WHEN (date1 is null and Date2 is not null) then Date2
WHEN (date1 is not null) then date1
ELSE DATE3

      from Table1
        ORDER BY DateCase 

任何想法如何加快这个查询?

标签: sql-servertsqlquery-performance

解决方案


[By Panagiotis Kanavos] 解决方案是创建一个计算列,添加我想在屏幕上显示的日期,它是在插入期间创建的。然后这个列被索引了,性能不错。

它可能不适用于任何情况 (例如,某些表可能很大,或者可能有多个此类情况,这会导致计算列和索引过多,这可能不是一个好的解决方案),但它适用于我的情况。


推荐阅读