关闭

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

标签: MySQL数据库索引优化
452人阅读 评论(0) 收藏 举报
分类:

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.对不使用的索引进行统计分析例如:



0
0
查看评论

solr亿万级索引优化实践(四)

本篇是这个系类的最后一篇,但优化方案不仅于此,需要后续的研究与学习,本篇主要从schema设计的角度来做一些实践。
  • cyony
  • cyony
  • 2017-03-15 18:59
  • 684

性能调优之MYSQL高并发优化

一、数据库结构的设计 表的设计具体注意的问题: 1、数据行的长度不要超过8020字节,如果超过这个长度的话在物理页中这条数据会占用两行从而造成存储碎片,降低查询效率。 2、能够用数字类型的字段尽量选择数字类型而不用字符串类型的(电话号码),这会降低查询和连接的性能,并会...
  • qq_14926159
  • qq_14926159
  • 2017-01-23 17:47
  • 949

MySQL 索引原理及慢查询优化

MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”、“SQL语句优化”、“了解数据库原理”等要求。我们知道一般的应用系...
  • u012410733
  • u012410733
  • 2016-05-19 19:43
  • 1206

慕客网-MySql性能优化视频

http://www.imooc.com/view/194?from=csdn
  • zhpengfei0915
  • zhpengfei0915
  • 2014-10-27 10:59
  • 2035

MySQL性能优化——易实现的MySQL优化方案汇总

1、索引优化及索引失效情况汇总2、表结构优化小技巧3、临时表的优化4、其它优化技巧
  • zhangliangzi
  • zhangliangzi
  • 2016-08-26 16:44
  • 4575

高性能MySQL - 查询性能优化

本文来源 《高性能MySQL》 一、如何检查一个查询的好坏 查询性能低下最基本的原因是访问的数据太多。造成低效查询的原因有以下两个: 1. 检索大量不需要的数据。 2. MySQL服务层在分析大量超过需要的数据行。 1. 检索大量不需要的数据 1.1 查询不需要的记录 一个常见的错误是误以为My...
  • Return_True_hang
  • Return_True_hang
  • 2017-03-27 21:52
  • 286

MySQL性能优化方案总结

MySQL进行优化, 效果: SQL和索引 > 数据库表结构 > 系统配置 > 硬件 ;但成本从低到高。
  • sinat_23080035
  • sinat_23080035
  • 2016-10-13 00:26
  • 4833

MySQL优化之——视图

使用视图的理由是什么? 1、安全性:一般是这样做的:创建一个视图,定义好该视图所操作的数据。 之后将用户权限与视图绑定,这样的方式是使用到了一个特性:grant语句可以针对视图进行授予权限。 2、查询性能提高 3、有灵活性的功能需求后,需要改动表的结构而导致工作量比较大,那么可以使用虚拟表的形式达到...
  • l1028386804
  • l1028386804
  • 2015-07-05 09:58
  • 1987

视图性能优化——索引视图

原文:索引视图
  • eriato
  • eriato
  • 2014-11-12 10:35
  • 9524

Android性能优化之电量优化

1、在android framework里面有专门负责电量统计的Service:BatteryStatsSerive ①这个Service在ActivityManagerService中创建,代码如下: mBatteryStatsService = new BatteryStatsSer...
  • zhaodecang
  • zhaodecang
  • 2016-11-26 00:40
  • 16266
    个人资料
    • 访问:33525次
    • 积分:839
    • 等级:
    • 排名:千里之外
    • 原创:60篇
    • 转载:3篇
    • 译文:0篇
    • 评论:3条
    最新评论