sql - 为什么我的mysql不使用索引?

标签 sql mysql indexing

我正在调整 mysql 的查询。 该模式具有 user_id 索引(以下..) 但没有使用索引。为什么?

环境: MySQL4.0.27,MyISAM

SQL 如下:

SELECT type,SUM(value_a) A, SUM(value_b) B, SUM(value_c) C
FROM  big_record_table
WHERE  user_id='<user_id>'
GROUP BY type

解释:

|table |type |possible_keys |key |key_len |ref |rows |Extra|

|big_record_table| ALL| user_id_key|||| 1059756 |Using where; Using temporary; Using filesort|

您能详细描述一下吗?

方案如下:

CREATE TABLE `big_record_table` (
 `user_id` int(11) NOT NULL default '0',
 `type` enum('type_a','type_b','type_c') NOT NULL default 'type_a',
 `value_a` bigint(20) NOT NULL default '0',
 `value_b` bigint(20) default NULL,
 `value_c` bigint(20) NOT NULL default '0',
 KEY `user_id_key` (`user_id`)
) TYPE=MyISAM

最佳答案

我的猜测是,typeuser_id 没有索引

只是一个意志运行。你没有给予太多可玩的东西。

关于sql - 为什么我的mysql不使用索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3974353/

相关文章:

mysql - 为什么 InnoDB 中索引大小大于数据大小?

sql - 包含 SQL 索引提示如何影响查询性能?

c# - CS0246 找不到类型或命名空间名称 'ErrorViewModel'(是否缺少 using 指令或程序集引用?)

mysql - 我登录了 phpmyadmin。登录后我收到错误。

PHP在mysql插入之前转换日期格式

php - 同时使用两个查询。 PDO

python - 使用单独的数据框将多索引映射到现有的 pandas 数据框列

SQL 服务器 2012 : A way to see if the database has been tampered with?

sql - 对于具有大量数据的表,将数据类型从 varchar 更改为 nvarchar

MySQL MYISAM 两个进程的并发问题