SQL调优

SQL慢可能的原因:

1、索引失效

CREATE TABLE `t2` (          
  `id` INT(11),
  `a` varchar(64) NOT NULL,                                                                                                                                                          
  `b` varchar(64) NOT NULL,                                                                                                                                                          
  `c` varchar(64) NOT NULL,                                                                                                                                                          
  `d` varchar(64) NOT NULL,                                                                                                                                                          
  `f` varchar(64) DEFAULT NULL,    
  PRIMARY KEY(id),
  UNIQUE KEY `f` (`f`),                                                                                                                                                              
  KEY `idx_abc` (`a`,`b`,`c`)                                                                                                                                                       
) ENGINE=InnoDB DEFAULT CHARSET=latin1

explain排查

重点关注type:all全表扫描,index遍历全索引树扫描,要看是否没满足最左前缀法则

possible keys:可能用到的索引

key:用到的索引

Extra:using where:查询字段未被索引覆盖,

where条件未被索引覆盖explain select * from t2 where d = "ni";

或非联合索引前导列explain select d from t2 where b = "ni";

using index :使用了覆盖索引

using where,using index:查询字段索引覆盖,但where 条件没满足最左前缀或where的条件是前导列的一个范围explain select b from t2 where a in ('a','d','sd');

失效原因:

1、索引参与函数运算

2、不满足最左前缀

3、使用or并且两边存在>,<;如果两边都有索引且都是=操作不会失效

4、like '%b'

5、隐式类型转换,索引本来是varchar类型,用int找:select * from mytable where name = 1;

2、多表join

小表做驱动表,并建立合适的索引

做数据冗余,尽量避免关联查询

3、表数据量太大/数据库连接数不够:分库分表

4、查询字段太多:只查询关键字段

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值