gpt4 book ai didi

MySQL 忽略了我的索引

转载 作者:搜寻专家 更新时间:2023-10-30 20:07:05 25 4
gpt4 key购买 nike

我对自己设置索引还很陌生。我目前只是在试验它,以了解它是如何工作的,以及在什么情况下数据库会使用索引。

我有一个包含 3 列的简单表格;一个ID,一个名字和一个状态。我在名称上设置了一个索引,它是一个 CHAR(30) 列。出乎我的意料,MySQL 在以下查询中忽略了这个索引:

SELECT * FROM people WHERE name = 'Peter'
id  select_type  table   type  possible_keys  key   key_len  ref    rows  Extra1   SIMPLE       people  ref   name           name  90       const  1     Using where

However, when using the following query, the index is used:

SELECT COUNT(*) FROM people WHERE name = 'Peter'
id  select_type  table   type  possible_keys  key   key_len  ref     rows  Extra1   SIMPLE       people  ref   name           name  90       const   1     Using where; Using index

谁能给我解释一下吗?

最佳答案

“使用索引”意味着它将索引用作“覆盖索引”。当它只需要访问索引来满足查询时,就会发生这种情况。

另一方面,如果“Using index”不存在,但在“key”列中命名了索引,那么它将按照“ref”列中描述的方式使用该索引。

所以在这两种情况下它都使用索引,但只有 COUNT() 使用它作为覆盖索引。

关于MySQL 忽略了我的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1497324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com