【发布时间】:2014-11-13 14:37:14
【问题描述】:
例如,我有 Employee 表。它具有列 ID、名称、地址、年龄。 我有两种索引。
- 索引名称:IdOnly,字段:Id
- 索引名称:IdAndName,字段:Id,名称
我的第一个查询是正常选择
从 ID=1 的员工中选择 *
第二个我称之为索引名称
Select * from employee use INDEX(IdOnly) where Id=1
这两者有什么区别?有查询时差吗?
【问题讨论】:
例如,我有 Employee 表。它具有列 ID、名称、地址、年龄。 我有两种索引。
我的第一个查询是正常选择
从 ID=1 的员工中选择 *
第二个我称之为索引名称
Select * from employee use INDEX(IdOnly) where Id=1
这两者有什么区别?有查询时差吗?
【问题讨论】:
这两者有什么区别?
在你暗示mysql 使用idOnly 索引的那一刻(它仍然可能会忽略它)
有查询时差吗?
通常情况下,第二个查询很可能更差(在性能方面;而且在可维护性方面肯定更差),因为通常优化器比你(很多)聪明。
所以经验法则是“更新”使用USE INDEX。当你知道你可能违反这条规则时,你可能会违反它。
【讨论】: