SQL LEFT JOIN中两种日期范围条件写法对比:哪种更优?
SQL JOIN条件写法对比:等价性与偏好分析
核心结论
这两种写法完全等价,你观察到执行计划无差异的结果已经说明问题:主流关系型数据库(如MySQL、PostgreSQL、SQL Server等)的查询优化器会将这两个条件解析为完全相同的执行逻辑,因此性能上没有任何区别。
写法偏好分析
- 可读性优先选
BETWEEN写法:x.date BETWEEN y.date_1 AND y.date_2更贴合自然语言的表述逻辑,一眼就能理解是判断x.date落在y.date_1到y.date_2的闭区间内,代码更简洁,后续维护成本更低,也是多数团队更青睐的写法。 - 边界特性完全一致:
要明确BETWEEN本身就是包含两端值的闭区间判断,和y.date_1 <= x.date AND y.date_2 >= x.date的逻辑毫无差别,不存在边界判断的隐藏差异。 - 拆分写法的适用场景:
如果后续需要调整边界条件(比如把<=改成<,或者增加额外的区间判断逻辑),拆分的AND写法修改起来更直接灵活,但如果是固定的闭区间匹配,BETWEEN写法依然是最优选择。
内容的提问来源于stack exchange,提问作者Tender_Figs
相关产品推荐
相关产品推荐

