美文网首页
建立索引的原则(DBA运维规范)

建立索引的原则(DBA运维规范)

作者: 蔺蔺蔺赫赫 | 来源:发表于2019-07-24 17:18 被阅读0次

8.1.0 说明

为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索引。

那么索引设计原则又是怎样的?

8.1.1 (必须的) 建表时一定要有主键,一般是个无关列

略.回顾一下,聚集索引结构.

8.1.2 选择唯一性索引

唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。

例如,学生表中学号是具有唯一性的字段。为该字段建立唯一性索引可以很快的确定某个学生的信息。

如果使用姓名的话,可能存在同名现象,从而降低查询速度。

优化方案:

(1) 如果非得使用重复值较多的列作为查询条件(例如:男女),可以将表逻辑拆分

(2) 可以将此列和其他的查询类,做联和索引

select count(*) from world.city;

select count(distinct countrycode) from world.city;

select count(distinct countrycode,population ) from world.city;

8.1.3(必须的) 为经常需要where 、ORDER BY、GROUP BY,join on等操作的字段,

排序操作会浪费很多时间。

where  A B C      ----》 A  B  C

in

where A  group by B  order by C

A,B,C

where A、GROUP BY B、ORDER BY C

1. 联合索引

2. (A,B,C)

如果为其建立索引,优化查询

注:如果经常作为条件的列,重复值特别多,可以建立联合索引。

8.1.4 尽量使用前缀来索引

如果索引字段的值很长,最好使用值的前缀来索引。

8.1.5 限制索引的数目

索引的数目不是越多越好。

可能会产生的问题:

(1) 每个索引都需要占用磁盘空间,索引越多,需要的磁盘空间就越大。

(2) 修改表时,对索引的重构和更新很麻烦。越多的索引,会使更新表变得很浪费时间。

(3) 优化器的负担会很重,有可能会影响到优化器的选择.

percona-toolkit中有个工具,专门分析索引是否有用

8.1.6 删除不再使用或者很少使用的索引(percona toolkit)

pt-duplicate-key-checker

表中的数据被大量更新,或者数据的使用方式被改变后,原有的一些索引可能不再需要。数据库管理

员应当定期找出这些索引,将它们删除,从而减少索引对更新操作的影响。

8.1.7 大表加索引,要在业务不繁忙期间操作

8.1.8 尽量少在经常更新值的列上建索引

8.1.9 建索引原则

(1) 必须要有主键,如果没有可以做为主键条件的列,创建无关列

(2) 经常做为where条件列  order by  group by  join on, distinct 的条件(业务:产品功能+用户行为)

(3) 最好使用唯一值多的列作为索引,如果索引列重复值较多,可以考虑使用联合索引

(4) 列值长度较长的索引列,我们建议使用前缀索引.

(5) 降低索引条目,一方面不要创建没用索引,不常使用的索引清理,percona toolkit(xxxxx)

(6) 索引维护要避开业务繁忙期

8.10 关于联合索引 *****

(1) where A、GROUP BY B、ORDER BY C  ---> (A,B,C)

(2) where  A B C 

(2.1) 都是等值 ,在5.5 以后无关索引顺序,把控一个原则唯一值多的列放在联合索引的最左侧

(2.2) 如果有不等值,例如以下情况

select where  A= and  B> and  C=

索引顺序,ACB ,语句改写为 AC

相关文章

  • 建立索引的原则(DBA运维规范)

    8.1.0 说明 为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索引。 那么...

  • DBA与MySQL简介

    1、MySQL-DBA工作职责 开发DBA 运维DBA 初级 安装、搭建 中级 数据库管理员、用户权限、索引管理、...

  • 2018-05-20

    IT 运维之道1.运维四个原则(1)按照IT运维服务的原则做事,IT运维服务的原则即事先讲计划、重承诺,事中讲规范...

  • mysql第一章节-简介,安装

    1、MySQL-DBA工作职责 1.1 开发DBA *** 1.2 运维DBA ***** 1.2.1 初级运维 ...

  • MySQL DBA

    MySQL DBA大概可以分为两种:一种是开发DBA,一种是运维DBA,这里说的MySQL DBA是指运维DBA。...

  • MySQL运维及开发规范

    MySQL运维及开发规范 一.基础规范 二.命名规范 库、表、字段开发设计规范 四.索引规范 五.SQL规范 六....

  • 2019-04-03-day01-第一章-MySQL-简介及安装

    1、官方定义的MySQL-DBA工作职责 1.1 开发DBA *** 1.2 运维DBA ***** 1.2.1 ...

  • DBA日常运维

    表空间: 1、查询表属于哪个表空间: 2、给表空间添加数据文件: 3、增加表空间数据文件的大小(之前初始化大小2G...

  • 数据库的性能优化

    建立索引数据库优化第一步就是建立合理的索引,这也是最初级的优化,也是DBA常用的优化方案!MySql索引类型有:普...

  • 关于数据库运维的个人思考

    DBA行业进入了“泛DBA时代”,从单一数据库运维进入了混合数据库运维时代,数据库产品和技术也是百花齐放日益更新,...

网友评论

      本文标题:建立索引的原则(DBA运维规范)

      本文链接:https://www.haomeiwen.com/subject/odujlctx.html