MySql DB查询优化器和关键字一样

时间:2012-04-17 13:28:10

标签: 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的查询。我正在介绍另一个不需要使用'name'过滤器的API。

我应该使用第一个查询,通过传递空的'name'过滤器或添加第二个命名查询。

3 个答案:

答案 0 :(得分:2)

在这两种情况下,都将使用department_id上的索引。在第一个查询中,MySQL将对结果集执行附加扫描(在按department_id过滤之后),以便在记录与名称模式匹配时对其进行过滤。优化程序可能会看到此匹配所有帖子并且不执行此扫描(按建议检查说明),但这可能也是版本特定的

答案 1 :(得分:1)

您可以使用EXPLAIN

进行检查

查看更多信息HERE

答案 2 :(得分:1)

首先,两个查询都不相同。第二个查询将显示名称的null值,但第一个查询不会显示名称的null值。

否则,第一个查询有两个要比较的字段,因此第二个查询需要更多时间。