You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server中按指定日期查询数据的最快方法是哪种?

SQL Server中指定日期行查询的性能对比

针对你列出的三种查询指定日期行的方法,性能差异如下:

  • 方法1:WHERE myColumn BETWEEN '2020-10-10T00:00:00.000' AND '2020-10-10T23:59:59.997'
    这是性能最优的方案。因为直接对myColumn进行范围比较,如果该列有索引,SQL Server可以直接利用索引快速定位数据,避免全表扫描。注意:DateTime类型的精度是3.33毫秒,23:59:59.999会被四舍五入到次日的00:00:00.000,可能误包含第二天的数据,建议把结束时间改成23:59:59.997。

  • 方法2:WHERE CAST(myColumn AS date) = '2020-10-10'
    这种写法虽然简洁,但因为对myColumn使用了CAST函数,会导致索引失效(除非提前创建了基于CAST(myColumn AS date)的计算列索引)。SQL Server需要扫描整个表,对每一行的myColumn做类型转换后再比较,数据量较大时性能会明显下降。

  • 方法3:WHERE myColumn LIKE '%2020-10-10%'
    这是性能最差的方案。首先,前导通配符%会让索引完全无法发挥作用,必须进行全表扫描;其次,将DateTime类型当作字符串进行模糊匹配本身不符合类型规范,可能因为日期格式问题匹配到错误数据,完全不推荐使用。

总结:如果myColumn有索引,修正后的方法1速度最快;即使没有索引,方法1的性能依然优于另外两种。

内容的提问来源于stack exchange,提问作者viktor nagla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 09:20:03