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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App