gpt4 book ai didi

MySQL 键索引不起作用,使用 where 搜索所有行

转载 作者:行者123 更新时间:2023-11-29 17:03:08 27 4
gpt4 key购买 nike

所以基本上我创建了一个表:

CREATE TABLE IF NOT EXISTS `student` (
`id` int(4) unsigned NOT NULL AUTO_INCREMENT,
`campus` enum('CAMPUS1', 'CAMPUS2') NOT NULL,
`fullname` char(32) NOT NULL,
`gender` enum('MALE', 'FEMALE') NOT NULL,
`birthday` char(16) NOT NULL,
`phone` char(32) NOT NULL,
`emergency` char(32) NOT NULL,
`address` char(128) NOT NULL,

PRIMARY KEY (`idx`),
KEY `key_student` (`campus`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

我有大约 20 行,但 CAMPUS1 中只有 12 行

但是当我使用查询时: SELECT * FROM Student WHERE Campus='CAMPUS1'; EXPLAIN 是这样的:

id  select_type   table   type  possible_keys  key  key_len  ref  rows  Extra
1 SIMPLE student ALL key_student NULL NULL NULL 20 Using where

我是新手,KEY 到底如何工作?我阅读了文档,但我不太明白。

最佳答案

MySQL 在决定用于查询的索引时试图变得聪明(取得了不同的成功)。

在某些情况下,查询整个表比使用索引更快。例如:如果您的表有 500 条 CAMPUS1 记录和 100 条 CAMPUS2 记录,则在查找 campus=' 时执行完整(600 条记录)扫描会更快校园1'

当您只有 20 行时,您会遇到算法的边缘情况。尝试添加更多行,看看会发生什么。

而且,这个指数似乎会很低 cardinality (仅在 2 个值之间均匀分配)。它可能不会很有用。

关于MySQL 键索引不起作用,使用 where 搜索所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52159356/

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