暂无图片
msyql前导列索引问题
我来答
分享
zxy
2021-03-31
msyql前导列索引问题

我建立一个组合索引,在查询的时候不使用这个这个组合索引的前导列进行查询但还是走索引,请教各位!

-----------------------------------------------------------+ | Table | Create Table | +-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | t | CREATE TABLE `t` ( `name` varchar(20) DEFAULT NULL, `age` int(29) DEFAULT NULL, `local` varchar(30) DEFAULT NULL, KEY `xxoo` (`name`,`age`,`local`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 | select count(*) from t; +----------+ | count(*) | +----------+ | 10000 | +----------+ 1 row in set (0.02 sec) explain select name from t where local='xx33'; +----+-------------+-------+------------+-------+---------------+------+---------+------+-------+----------+--------------------------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+-------+------------+-------+---------------+------+---------+------+-------+----------+--------------------------+ | 1 | SIMPLE | t | NULL | index | NULL | xxoo | 61 | NULL | 10161 | 10.00 | Using where; Using index | +----+-------------+-------+------------+-------+---------------+------+---------+------+-------+----------+--------------------------+ 1 row in set, 1 warning (0.00 sec)
复制
我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
Cui Hulong

可以通过OPTIMIZER_TRACE 看看。应该走索引的
“best_covering_index_scan”: {
“index”: “xxoo”,
“cost”: 0.35,
“chosen”: true
},
MySQL5.7 后期的版本 ,8.0版本 应该不走全表扫描,基本走覆盖索引了。

暂无图片 评论
暂无图片 有用 0
打赏 0
暂无图片
姚崇

因为你表上只有1个索引,这个sql MySQL考虑xxoo这个索引也很正常,可以使用optimier_trace具体分析下

暂无图片 评论
暂无图片 有用 0
打赏 0
chengang

你这个是走的索引扫描,mysql认为,扫描你这棵二级索引树,花费更少。

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
MySQL 用navicat新建查询 ,没有表格路径?
回答 1
已采纳
我猜你想要的是“查看”“导航窗格”“显示导航窗格“
mysql能查到历史的锁等待信息吗?
回答 2
已采纳
可以借助这几个表查看informationschema.INNODBLOCKS、informationschema.INNODBLOCKWAITS、nformationschema.INNODBTRX
MySQL过滤出所有表中存在字段类型为varchar且字段值含有逗号的的字段,有什么办法?
回答 1
SELECTcolumnnameAS'字段名称',columntypeAS'字段类型',columncommentAS'字段描述',IF(columnkey'PRI','TRUE','FALSE')A
MySQL怎样把会话变量sql_warnings恢复成默认值?
回答 1
已采纳
SET@@session.sqlwarnings DUFAULT;等价于 SET@@local.sqlwarningsDUFAULT; SET@@local.sqlwar
mysql库 查询耗时较长的sql
回答 2
selectfromsys.statementswithfulltablescans;这个里面有权标扫描的语句。
阿里mysql没有走主键查询走了全表扫描
回答 4
showvariableslike‘%eqrangeindexdivelimit%’看一下这个参数是什么值呢
MySQL 有张表查询30s,在同一个环境里面复制了这张表,查询只花了3s。执行计划一模一样,这是什么原因?
回答 2
已采纳
查询慢会受到数据大小、结构、内存,IO,网络…等等因素,但现在是同一环境,同一查询操作,是否?原表关联了其它数据,而复制的表是做为新表,没有任何的关联关系,所以查询慢快。
大佬给推荐点mysql的好书呗?
回答 2
已采纳
《MySQL实战(图灵出品)》陈臣著;墨值商城950墨值,你值得拥有;https://www.modb.pro/point/mall
用哪些命令可以查看MySQL数据库中的表结构?
回答 3
已采纳
MySQL查看表结构命令,如下:desc表名;showcolumnsfrom表名;describe表名;showcreatetable表名;四种方式都可以,感觉回答的质量可以的话麻烦采纳一下哟
mysql可以直接物理迁移数据文件目录么
回答 6
已采纳
关数据库,直接复制全部的数据目录,在版本一致的情况下,是可以正常启动的。你找下启动的配置文件,是不是配置文件指向有问题。