mysql优化

复制代码
1.读表的时候,尽可能的避免全表扫描,根据合理的业务需求,在where和orderby上面建立索引
2.尽量避免在where中使用!=或者<>,否则存储引擎将放弃索引走全表扫描
3.尽量避免where语句中对null值进行判断,否则也会导致存储引擎放弃索引走全表扫描,可以使用0代替判断,前提是字段不能为null
4.尽量避免在where语句中使用or品阶,可以使用union all代替
5.尽量不适用like做检索,可以使用全文检索来代替
6.尽量不适用in或者not in,避免全表扫描,如果是连续的数字,可以使用between 来代替
7.尽量避免语句中对字段进行函数操作
8.尽量避免大事务操作,提高系统并发能力
9.避免select * 等操作
10.sql语句中的in包含的值不应过多
11.只需要查询一条数据的时候,使用limit 1
12.如果排序字段没有用到索引,就尽量少排序
13.查询结果集太大,可以使用分段查询
14.隐式类型转换,(where子句中出现cloumn字段的类型和传入的参数类型不一致发生的类型转换,建议先确定where中的参数类型)
15.使用join查询,尽量使用inner join(参与联合查询的表至少为2张表,一般都存在大小之分。如果连接方式是inner join,在没有其他过滤条件的情况下MySQL会自动选择小表作为驱动表,但是left join在驱动表的选择上遵循的是左边驱动右边的原则,即left join左边的表名为驱动表)

16.做mysql优化,善用explain来查看sql执行计划,重点关注:
type:连接类型,一个好的sql语句至少达到range级别,避免出现all全表扫描
key:使用到的索引名,如果没有使用索引,值是null
key_len:索引的长度
rows:扫描的行数,该值是个预估值
extra:详细说明。注意,常见的不太友好的值,如下:Using filesort,Using temporary


复制代码

 

posted @   -韩  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示