Mysql优化 ----之 没写完
作者:互联网
MYSQL优化
在哪个阶段需要优化SQL?&&为什么会需要优化SQL呢?
在项目开发阶段 开发人员只需要把功能实现 测试 上线 上线之后 随着数据量的增加(数据量大了) 你会发现有些页面加载的时候会很慢这就是sql查询的时候变慢了 需要优化sql查询语句
为什么需要优化SQL这个问题 好像是傻*问题 PS:嘻嘻嘻嘻嘻
– 自己观察就好了 不想打字了 不好意思爸爸们
show status like 'com_______'; -- 查询你本次打开数据crud次数
show global status like 'com_______'; -- 查询数据库从出生到现在crud次数
show global status like 'Innodb_rows_%'; --
show processlist;
EXPLAIN 跟sql
EXPLAIN select * from user ;
SELECT @@have_profiling;
show profiles; -- 查看刚刚sql 耗时
show profile for QUERY 150; -- 150 是上句查询出来的编号
索引失效的情况
索引类型需要转换的时候
eg: 索引本来是 int 你条件查询的时候 带引号给它转成了varchar 。 或者反过来了
a 是 int 索引
select * from user where a = 1; -- 索引生效
select * from user where a = '1'; -- 索引生效个卵子
反过来也是 a 是 varchat 可以自己试试
like 以“%” 开头的情况 eg: select * from user where name like ‘%豪’
or 当or左右查询字段只有一个是索引,索引失效,只有当or左右查询字段都有索引时,才会生效
eg :爸爸按照儿子说的 试一下就知道了
组合索引 eg: 组合索引的字段是 a,b,c
查询的时候 条件有c的时候 必须带上 a,b字段
条件有b的时候 必须带上 a字段
试试?
is null 索引生效
is not null 索引生效个鸡儿
eg: a 有索引
select * from user where a is null; -- 生效
select * from user where a is not null; -- 生效? 我也想它生效
一般情况下是这样的
我看网上的有文章 有别的说话,可以Google Baidu
左右连接的字段,编码不一样可能导致索引失效
有运算操作
列使用了mysql内置函数
mysql优化器觉得全表扫描比使用索引快:数据量少的时候
使用了 !=、<>
标签:show,--,查询,----,索引,user,Mysql,没写,select 来源: https://blog.csdn.net/weixin_45838279/article/details/120178416