哪个在MySQL where子句中表现更好:YEAR()vs BETWEEN?
发布时间:2020-12-11 23:41:24 所属栏目:MySql教程 来源:网络整理
导读:我需要从MySQL数据库中查找给定年份中创建的所有记录.以下任何一种方法是否会比另一方慢? WHERE create_date BETWEEN '2009-01-01 00:00:00' AND '2009-12-31 23:59:59' 要么 WHERE YEAR(create_date) = '2009' 最佳答案无论何时对列使用函数,它都必须在每
我需要从MySQL数据库中查找给定年份中创建的所有记录.以下任何一种方法是否会比另一方慢?
要么
最佳答案
无论何时对列使用函数,它都必须在每一行上执行该函数,以查看它是否与常量匹配.这可以防止使用索引.
因此,基本的经验法则是避免使用比较左侧的函数. Sargable意味着DBMS可以使用索引.使用左侧的列和右侧的常量以允许DBMS使用索引. 即使您在create_date列上没有索引,DBMS仍然会为每行运行YEAR()函数.所以,无论如何,第一种方法最有可能更快. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- oracle 存储过程创建表分区
- mysql – SQLSTATE [HY000] [1045]访问被拒绝用户’root’
- Mysql必读介绍一个针对C++程序的MySQL访问库soci
- MYSQL教程mysql 索引分类以及用途分析
- Mysql学习解决MySQL 5.7.9版本sql_mode=only_full_group_by
- MYSQL教程mysql 实现互换表中两列数据方法简单实例
- Mysql学习MySQL无GROUP BY直接HAVING返回空的问题分析
- SQL Server 2005/2008遍历所有表更新统计信息
- Mysql入门全面解析Windows下安装 mysql5.7的方法
- 删除表中重复记录大于两条保存两条