MySQL性能优化三之索引的优化

原创 2016年08月29日 10:49:22

1.索引的概念和建立

1.1.概念:对数据库里面的值进行排序的一种结构。在一张表中为一个字段创建一个索引,将创建另外一个数据结构,包含字段数值以及指向相关记录的指针,然后对这个索引结构进行排序,允许在该数据上进行二分法排序。

1.2.普通索引:ALTER TABLE table_name ADD INDEX index_name ON (column(length))
1.3.唯一索引:ALTER TABLE table_name ADD UNIQUE indexName ON (column(length))
1.4.组合索引:ALTER TABLE table_name ADD INDEX indexName(column(length),column1(length),...)

1.5.主键索引:唯一索引的一种特殊形式,不允许为Null,可以被其他表引用为外键,只能有一个。

1.6.外键索引:如果为某个外键字段定义了一个外键约束条件,MySQL就会定义一个内部索引来帮助自己以最有效率的方式去管理和使用外键约束条件。

2.如何选择合适的列建立索引

2.1.where从句、group by从句、order by从句、on从句中出现的列。

2.2.索引字段越小越好(数据库的数据存储以页为单位一页存储的数据越多一次IO操作获取的数据越大效率越高)。

2.3.离散大(变量各个取值之间的差异程度)的列放到联合索引的前面,可以通过count()函数查看字段的差异值,返回值越大说明字段的唯一值越多字段的离散程度高。

2.4.尽量避免NULL:应该指定列为NOT NULL,除非你想存储NULL。在MySQL中,含有空值的列很难进行查询优化,因为它们使得索引、索引的统计信息以及比较运算更加复杂。你应该用0、一个特殊的值或者一个空串代替空值。

3.索引优化SQL的方法

3.1.盲目增加索引过多会影响查询和写入的效率。

3.2.重复的索引:相同的列以相同的顺序建立同类型的索引(比如在主键字段上面再增加唯一性索引)。

3.3.冗余索引:多个索引的前缀列相同,或者在联合索引中包含主键索引(因为INnoDB会在每个索引的后面附加主键信息)。

3.4.使用pt-dupicate-key-checker工具检查重复索引和冗余索引(pt-dupicate-key-checker -uroot -p123456 -h127.0.1

4.索引维护的方法

4.1.对不使用的索引进行删除

4.2.对不使用的索引进行统计分析例如:



版权声明:本文为博主原创文章,未经博主允许不得转载。

由浅入深探究 MySQL索引结构原理、性能分析与优化(三)

2.3)where + orerby 类型,where满足最左前缀原则,且orderby的列和where子句用到的索引的列的子集。即是(a,b,c)索引,where满足最左前缀原则且order by中...

【Day61】MySQL数据库性能优化之三(索引优化)

索引为什么能提高数据访问性能?  很多人只知道索引能够提高数据库的性能,但并不是特别了解其原理,其实我们可以用一个生活中的示例来理解。      我们让一位不太懂计算机的朋友去图书馆确认一本叫做《...

【MySql性能优化三】索引优化

我们在查询表时,如果按照某个字段作为条件或者排序方式时,在这个字段上建立索引,可以加快查询速度。 那么是不是索引建立的越多,数据库的性能越高呢?这篇博客来研究一下索引的使用。 覆盖索引什么是覆盖索引...

由浅入深探究 MySQL索引结构原理、性能分析与优化

第一部分:基础知识: 索引 官方介绍索引是帮助MySQL高效获取数据的数据结构。笔者理解索引相当于一本书的目录,通过目录就知道要的资料在哪里,不用一页一页查阅找出需要的资料。关键字inde...

Mysql性能优化案例研究 - 覆盖索引和SQL_NO_CACHE

场景产品中有一张图片表pics,数据量将近100万条,有一条相关的查询语句,由于执行频次较高,想针对此语句进行优化表结构很简单,主要字段:user_id 用户ID picname 图片名称 small...

MySQL索引使用方法和性能优化

关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。对于没有索引的表,单表查询可能几十万数据就是瓶颈,而通常大型...

由浅入深探究mysql索引结构原理、性能分析与优化

摘要: 第一部分:基础知识 第二部分:MYISAM和INNODB索引结构 1、 简单介绍B-tree B+ tree树 2、 MyisAM索引结构 3、 ...
  • hireboy
  • hireboy
  • 2013年11月12日 15:09
  • 626

[转]由浅入深探究mysql索引结构原理、性能分析与优化

由浅入深探究mysql索引结构原理、性能分析与优化 作者:phpben 来源:http://www.phpben.com/?post=74 摘要: ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MySQL性能优化三之索引的优化
举报原因:
原因补充:

(最多只允许输入30个字)