mysql优化建议

本文提供了MySQL优化建议,包括创建时尽量限制索引数量在6个以内,避免使用大文本类型,考虑在where及order by列上加索引,以及在SQL编写时利用explain优化执行计划,减少子查询层数,避免函数和表达式在where子句中,合理使用Limit等技巧。
摘要由CSDN通过智能技术生成
1. 创建
  • 每张表上的索引不应多于6个,索引越多在插入删除时越慢,而且索引会占用很大的磁盘空间。
  • 尽量避免使用text, blog, clob大对象大文本的数据类型,空间占取大,而且索引失效。
  • 考虑在经常做为where及order by列上加索引。
  • 不要在列值可能为null上列上建索引。
  • 索引字段的空间占取要尽可能的小。
  • 若只含数值信息的字段尽量不要设计为字符型,尽量使用数字型字段
2. SQL编写
  • 使用explain查询执行计划看应该用到的索引有没有用到,如果在查询列上加了索引但是在执行计划中看到该索引没有用到那么再根据以下建议调整SQL确保能用到萦引。
  • select语句中尽量减少使用select *;多表连接情况下,请给表取别名,并在查询的字段中明确表名。
  • 使用子查询嵌套不要超过3层。
  • 尽量不要使用子查询作为连接的表使用。
  • 在查询集合较大的情况下如果进行集合查询使用[not] exists 关键字,在查询钱要尝试 [not] in 和 [not] exists 的效率。
  • 避免在where子句中使用null判断、<>和!= 操作符会导致索引失效,并且会进行全表扫描。
  • 避免在where子句中使用函数和表达式,会导致索引失效,函数和表达式可以放在=号的右边进行处理。
  • 当只要一行数据时加Limit 1,这样MySQL数据库引擎会在找到一条数据后停止搜索,而不是继续往后查少下一条符合记录的数据。
  • 应该尽量避免在where子句中用前置模糊查询(select id from t where name like ‘%李’), 这样即便name列有索引也会失效,进行全表扫描。
  • 在使用索引字
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值