一,.日常工作中,你是怎么优化SQL的
1,恰当的建立索引或者联合索引
2,避免使用 is not null ,or ,is null,条件用到内置函数,条件类型不一致,避免in 数据过多等导致索引失效
3,需要什么数据就查询什么数据,避免* 加载全部字段
4,避免表里面建立比较大字段比如 text,blod大字段,和大的carchar字段,如果必须要用可以单独存放和文件服务保存
5,表关联查询可以以小表驱动大表
6,如果必须关联很多表查询,可以做字段冗余,或者 union all
7,查询业务逻辑如果只能有一条加上 limit 1,
8,select update,条件后面字段避免是非索引字段,避免锁表
二,是否遇到过深分页问题,如何解决
1,查询带上上一次查询的id,进行查询
2,通过子查询先查询出id,然后再通过id筛选进行查询,避免过多的数据回表
三,聊聊explain执行计划
1,我一般就看四个字段 一个是type,key,rows,Extra
type 看索引级别,根据自己的筛选需求是否合理
key 用的那个索引,如果不是自己想要的索引,可以排查一下为啥,row扫描行数时候合理,如果不合理是不是索引不对,或者执行计划不对
Extra 就看是否用到了索引,是否用到了排序(通过索引可以避免排序)
四,说说大表的优化方案
1,如果表大就合理分表,可以分热数据和冷数据,避免冷数据总掺和更新操作
2,超大字段单独独立存放
3,通过字段冗余避免多表关联
五,哪些因素可能导致MySQL慢查询
1,没有用到索引,比如一上面所说导致索引失效
2, is not null ,or ,is null,!= ,<>,条件用到内置函数,条件类型不一致或者两张表编码不一致,避免in 数据过多等导致索引失效,或者是选错了索引,可以使用强制索引,以及深分页的问题
3,单表数据量过大,或者字段太多
4,join的表太多
5,也可能数据库正在刷脏页,
6,order by 用到了 文件排序,
六,如何使用索引优化SQL查询?
1,首先避免五里面的所有内容 sql还是慢,
mysql遇到的问题
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- Mysql目前主要有以下几种索引类型:FULLTEXT,HASH,BTREE,RTREE。 1. FULLTEXT...