MySQL扫描行数会影响索引选择(坑别踩)

您所在的位置:网站首页 索引不是为负数就是大于行数对吗 MySQL扫描行数会影响索引选择(坑别踩)

MySQL扫描行数会影响索引选择(坑别踩)

2024-07-07 13:40| 来源: 网络整理| 查看: 265

文章目录 1 选错索引的现象2 优化器的逻辑3 索引选择异常和处理3.1 采用force index强行选择一个索引3.2 第二种方法3.3 第三种方法3.4 第四种方法 4 例子中force index(a)的扫描行数为什么是37000

1 选错索引的现象

  在MySQL中一张表可以支持多个索引。但是,写SQL语句的时候并没有主动指定使用哪个索引,使用哪个索引是由MySQL来确定的。   一条本来可以执行得很快的语句,却可能由于MySQL选错了索引会导致执行速度变得很慢。

  创建一个简单的表,表里有a、b两个字段,并分别建上索引:

CREATE TABLE `t` ( `id` int(11) NOT NULL, `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `a` (`a`), KEY `b` (`b`) ) ENGINE=InnoDB;

然后往表t中插入10万行记录,取值按整数递增,即:(1,1,1),(2,2,2),(3,3,3) …

delimiter ;; create procedure idata() begin declare i int; set i=1; while(i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3