博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mysql索引和性能优化笔记
阅读量:5086 次
发布时间:2019-06-13

本文共 1008 字,大约阅读时间需要 3 分钟。

  • 使用索引的原则

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

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

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

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

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

  • 按需使用索引

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

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

  • 一些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

你可能感兴趣的文章
TCP粘包问题及解决方案
查看>>
构建之法阅读笔记02
查看>>
添加按钮
查看>>
移动端页面开发适配 rem布局原理
查看>>
Ajax中文乱码问题解决方法(服务器端用servlet)
查看>>
会计电算化常考题目一
查看>>
阿里云服务器CentOS6.9安装Mysql
查看>>
剑指offer系列6:数值的整数次方
查看>>
js 过滤敏感词
查看>>
poj2752 Seek the Name, Seek the Fame
查看>>
软件开发和软件测试,我该如何选择?(蜗牛学院)
查看>>
基本封装方法
查看>>
bcb ole拖拽功能的实现
查看>>
生活大爆炸之何为光速
查看>>
bzoj 2456: mode【瞎搞】
查看>>
[Typescript] Specify Exact Values with TypeScript’s Literal Types
查看>>
[GraphQL] Reuse Query Fields with GraphQL Fragments
查看>>
Illustrated C#学习笔记(一)
查看>>
理解oracle中连接和会话
查看>>
两种最常用的Sticky footer布局方式
查看>>