MySql DB 查询优化器和 like 关键字

标签 mysql sql hibernate query-optimization

MySql 查询优化器如何处理以下查询?

Select * from Eomlpyees e where e.department_id = 100 and e.name like '%%';

Select * from Eomlpyees e where e.department_id = 100;

第一个查询是一个 Hibernate 命名查询。我正在介绍另一个不需要使用“名称”过滤器的 API。

我应该通过传递空的“名称”过滤器来使用第一个查询还是添加第二个命名查询。

最佳答案

在这两种情况下,都将使用department_id 上的索引。在第一个查询中,MySQL 将对结果集执行额外的扫描(按部门 ID 过滤后),以过滤记录是否与名称模式匹配。优化器可能会发现这与所有帖子匹配,并且不执行此扫描(检查建议的解释),但这也可能是特定于版本的

关于MySql DB 查询优化器和 like 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10192204/

相关文章:

mysql - 如何提取 MySQL 中 JSON 数组中元素内特定属性的所有值?

mysql - 具有差异条件的多重计数?

mysql - 还返回过去 12 个月 mysql 中具有空值的空月份

mysql - 计算每年开始日期和结束日期之间的持续时间(以天为单位)

mysql - 关于使用索引的 sql 中的 < Or > 是如何工作的

sql - 从 Go 中的 SQL 查询中获取计数和结果

mysql - sql 比内部连接的交集更好的方法

java - 将类映射到没有表名的表

hibernate - 事务方法中的显式 flush() 是否会更新数据库

java - 编程约束定义并重新定义默认组