MySql教程

Mysql优化 ----之 没写完

本文主要是介绍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优化器觉得全表扫描比使用索引快:数据量少的时候
使用了 !=、<>
这篇关于Mysql优化 ----之 没写完的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!