Mysql索引和性能优化笔记

  • 使用索引的原则

  • 如果没有唯一性要求,可以选择普通索引

  • 如果列上有唯一性要求,可以选择唯一索引

  • 如果是需要模糊搜索,建议选择全文索引

  • 如果有多个条件一起查询,可以选择组合索引

  • 使用索引需要注意以下几点:

  • 按需使用索引

  • 索引所在的列基数越大越好 , 男女这种字段建立索引的效果并不大 ,基数很小

  • 在组合索引上要注意最左原则

  • 一些MySQL使用建议

  • EXPLAIN 你的 SELECT 查询

  • 就算只要一行数据时使用 LIMIT 1,而且一定要加上where限制条件
    查询的时候如果只要一条数据,但是MySQL依然会去检查全部的记录数,使用 limit 1 的话查询到合适的记录之后MySQL变回返回数据了不再继续查询;更新的时候更应该加上 limit 1,还有要加上where条件,以避免造成不必要的失误而误删数据。

  • 尽量不使用join进行多表查询,将复杂的复合查询拆分出来
    进行多表联查的时候会极大地降低查询效率,在并发的情况下极容易影响到业务,容易发生死锁,所以应该尽量避免。

  • 千万不要 ORDER BY RAND()
    这样使用只让你的数据库的性能呈指数级的下降。这里的问题是:MySQL会不得 不去执行RAND()函数(很耗CPU时间),而且这是为了每一行记录去记行,然后再对其排序。就算是你用了Limit 1也无济于事(因为要排序)

  • 避免 SELECT * 的使用
    只选出你需要的字段就可以了,因为查询的数据越多,查询就会变的越慢。如果你的数据库服务器和WEB服务器是两台独立的服务器的话,这还会增加网络传输的负载。

  • 设计表结构时尽可能的使用 NOT NULL
    不要以为 NULL 不需要空间,其需要额外的空间,并且,在你进行比较的时候,你的程序会更复杂。 当然,这里并不是说你就不能使用NULL了,现实情况是很复杂的,依然会有些情况下,你需要使用NULL值。

  • 删除数据的时候不要使用物理删除,应该尽量使用软删除
    物理删除是一种极不提倡的做法,失误是不可避免的,删除数据的时候还有可能出现错误的,为了避免造成不可挽回的错误,所以应该使用软删除而不是物理删除。

  • 不要写出 != 这种令人窒息的where条件
    使用 != 进行查询的时候会造成索引的失效,所以即使你设置了索引但是查询的时候依然不会起作用。



转载于:https://www.cnblogs.com/unclewang666/p/11153075.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值