sql-server - 按日期排序很慢
问题描述
此查询需要 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
任何想法如何加快这个查询?
解决方案
[By Panagiotis Kanavos] 解决方案是创建一个计算列,添加我想在屏幕上显示的日期,它是在插入期间创建的。然后这个列被索引了,性能不错。
它可能不适用于任何情况 (例如,某些表可能很大,或者可能有多个此类情况,这会导致计算列和索引过多,这可能不是一个好的解决方案),但它适用于我的情况。
推荐阅读
- python - Python replace method
- javascript - AG Grid - Find & Replace Value (Individual Column)
- javascript - 如何使用 date-fns 将格式为 MMM/yyyy 格式的日期恢复为 yyyy-MM 格式
- flutter - Flutter - 如何在使用 PageView 或 BottomNavigationBar 更改页面时保持页面活动
- node.js - 为什么 Node.js 上会出现“TypeError:client.db is not a function”,我该如何解决?
- session - grecaptcha and req.session best practises
- python - Keras RNN vector as an output
- c# - 秒表 MVVM Xamarin 表单
- firebase - Firebase:使用 DocumentSnapshot id 作为用户 uid。想法?
- store - Managing data in store for Blazor server application