• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > Mysql-索引总结

Mysql-索引总结

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了Mysql,索引总结等相关知识,希望本文的分享对您有所帮助
索引(Index)是帮助MySQL高效获取数据的数据结构。

下边是自己整理的资料与自己的学习总结,,做一个汇总。


一.真的有必要使用索引吗?


不是每一个性能问题都可以通过创建一个索引来解决;有很多其它解决性能问题的方式

a).各个应用层的缓存,

b).调优数据库参数和缓冲区大小,

c).调优数据库连接池大小或者线程池大小,

d).调整数据库事务隔离级别,

f).在夜间安排批量删除,避免不必要的锁表,

其它等等。


二.mysql索引类型normal,unique,full text的区别

1.PRIMARY, INDEX, UNIQUE 这3种是一类

normal:表示普通索引

unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可设置为unique,特殊的,主键primary_key默认非空唯一

2.FULLTEXT 是全文索引,用于在一篇文章中,检索文本信息的。

full text: 表示 全文搜索的索引。 FULLTEXT 用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以。

总结,索引的类别由建立索引的字段内容特性来决定,通常normal最常见。

详细信息参考:http://blog.sina.com.cn/s/blog_887d00920100wgf3.html


三.索引总结

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

本小节将向读者介绍一些索引的设计原则。干货呀!

  1.选择唯一性,单调性的索引

  唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。例如,学生表中学号是具有唯一性的字段。为该字段建立唯一性索引可以很快的确定某个学生的信息。如果使用姓名的话,可能存在同名现象,从而降低查询速度。单调性指的是数字递增或递减,比如ID,这样效率会高(7.mysql-聚簇索引之随机主键的效率.note)

  2.为经常需要排序、分组和联合操作的字段建立索引

  经常需要ORDER BY、GROUP BY、DISTINCT和UNION等操作的字段,排序操作会浪费很多时间。如果为其建立索引,可以有效地避免排序操作。

  3.为常作为查询条件的字段建立索引

  如果某个字段经常用来做查询条件,那么该字段的查询速度会影响整个表的查询速度。因此,为这样的字段建立索引,可以提高整个表的查询速度。

  4.限制索引的数目

  索引的数目不是越多越好。每个索引都需要占用磁盘空间,索引越多,需要的磁盘空间就越大。修改表时,对索引的重构和更新很麻烦。越多的索引,会使更新表变得很浪费时间。

  5.尽量使用数据量少的索引

  如果索引的值很长,那么查询的速度会受到影响。例如,对一个CHAR(100)类型的字段进行全文检索需要的时间肯定要比对CHAR(10)类型的字段需要的时间要多。避免不了,解决方法见6.

  6.尽量使用前缀来索引

  如果索引字段的值很长,最好使用值的前缀来索引。例如,TEXT和BLOG类型的字段,进行全文检索会很浪费时间。如果只检索字段的前面的若干个字符,这样可以提高检索速度。

不错的网络文章参考 :(MySQL前缀索引和索引选择性)http://www.cnblogs.com/gomysql/p/3628926.html

7.注意联合索引的顺序,遵循左匹特性配

在select中where条件的先后顺序无所谓SQL内核会排序优化,但是建立联合索引时就有所谓了,遵循左前缀原则。5.4 mysql-索引数据结构.note 最后结论

 8.删除不再使用或者很少使用的索引

  表中的数据被大量更新,或者数据的使用方式被改变后,原有的一些索引可能不再需要。数据库管理员应当定期找出这些索引,将它们删除,从而减少索引对更新操作的影响

9.索引并不是越多越好,最多6个

索引固然可以提高相应的 select 的效率,但同时也降低了 insert 及 update 的效率,因为 insert 或 update 时有可能会重建索引,

所以怎样建索引需要慎重考虑,视具体情况而定。一个表的索引数最好不要超过 6 个,若太多则应考虑一些不常使用到的列上建的索引是否有必要。

10.emun 的情况或只有个位数级别的字段,没必要加索引

极端点的情况,90万的数据,source只有0和1两个值,利用索引要先读索引文件,然后二分查找,找到对应数据的数据磁盘指针,再根据读到的指针再读磁盘上对应的数据数据,影响结果集45万。这种情况,和直接全表扫描那个快显而易见。

11.索引对group by 有效

本质也是一个排序的过程,而索引帮其实现6 mysql-索引优化策略.note 第三条

不知觉就看着这么多行了,真实一下子也记不住呀,但是仔细想想上边的每一条,在生产运用中还真该这么注意,发现一些问题如果能注意到上边的这么几条,还真有些道理。所以,总结如下:

545.png

  注意:选择索引的最终目的是为了使查询的速度变快。上面给出的原则是最基本的准则,但不能拘泥于上面的准则。

读者要在以后的学习和工作中进行不断的实践。根据应用的实际情况进行分析和判断,选择最合适的索引方式。

以上就是Mysql-索引总结的内容,更多相关内容请关注微课江湖()!

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 分享下mysql各个主要版本之间的差异
  • MySQL essential版本和普通版本有什么区别?
  • redhat 5.4下安装MYSQL全过程
  • 如何用SQL命令查看Mysql数据库大小
  • 解析mysql中如何获得数据库的大小
  • 解析mysql修改为utf8后仍然有乱码的问题
  • 5个常用的MySQL数据库管理工具详细介绍
  • 解析在MySQL里创建外键时ERROR 1005的解决办法
  • 解析远程连接管理其他机器上的MYSQL数据库
  • mysql 精简过程(删除一些文件)

相关文章

  • 2018-12-05MySQL学习笔记之数据定义表约束,分页方法总结_MySQL
  • 2018-12-05MySQL之—GROUP BY分组取字段最大值的示例代码详情
  • 2018-12-05sql编程的几个常识
  • 2018-12-05mysql中用正则表达式进行搜索教程(一)
  • 2018-12-05用Oracle并行查询发挥多CPU的威力
  • 2018-12-05MySQL用户权限管理实例详解
  • 2018-12-05MySQL修改默认字符集编码的方法_MySQL
  • 2017-05-11mysql之innodb的锁分类介绍
  • 2018-12-05MySQL-group-replication配置步骤的示例代码分享
  • 2018-12-05MySQL怎么进行单表查询?单表查询的语句

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • Xshell远程管理MySQL服务器如何实现选择自动复制以及右键自动粘贴的设置!
    • 内连接、左外连接、右外连接、交叉连接它们的区别是什么
    • 使用mysqld_multi实现单系统中配置多个MySQL服务器实例
    • sql2005 附加数据库出错(错误号:5123)解决方法
    • MySQL事务处理与应用简析
    • mysql读写分离实战-构建高性能web的代码示例
    • Oracle启动时出现ORA-32004报错的解决方法
    • 彻底卸载MySQL的方法分享
    • MariaDB(Mysql分支)my.cnf配置文件中文注释版
    • sqlserver 存储过程中的top+变量使用分析(downmoon)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有