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/