MySQL的索引设计原则以及索引相关知识_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2579 | 回复: 0   主题: MySQL的索引设计原则以及索引相关知识        下一篇 
huang.wang
注册用户
等级:中将
经验:17623
发帖:407
精华:1
注册:1970-1-1
状态:离线
发送短消息息给huang.wang 加好友    发送短消息息给huang.wang 发消息
发表于: IP:您无权察看 2017-5-16 17:50:50 | [全部帖] [楼主帖] 楼主

    索引的定义:MySQL中的是一个单独的,存储在磁盘上的数据库结构,其包含着对数据表里所有记录的引用指针。

    下面简单介绍一些索引设计的原则和一些关于索引的知识。


    数据库索引的设计原则:

    1.选择唯一性索引

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

    例如,学生表中学号是具有唯一性的字段。为该字段建立唯一性索引可以很快的确定某个学生的信息。如果使用姓名的话,可能存在同名现象,从而降低查询速度。

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

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

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

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

    4.限制索引的数目

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

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

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

    6.尽量使用前缀来索引

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

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

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

    8.小表不应建立索引;包含大量的列并且不需要搜索非空值的时候可以考虑不建索引

    以上就是在使用MySQL时简历索引的一些原则,按照这些原则来设计索引能大大提高数据库的使用效率。


    下面再给大家分享一些有关 MySQL索引的小常识:

    一、 经常被用来过滤记录的字段。

        1. primary key 字段, 系统自动创建主键的索引;

        2. unique key 字段,系统自动创建对应的索引;

        3. foreign key 约束所定义的作为外键的字段;

        4. 在查询中用来连接表的字段;

        5. 经常用来作为排序(order by 的字段)基准的字段;

    二、索引会占用磁盘空间,创建不必要的索引只会形成浪费。

    三、索引的创建必须考虑数据的操作方式。

        1.内容很少变动,经常被查询,为它多创建几个索引無所谓;

        2.经常性,例行性变动的表而言,则需要谨慎地创建确实必要的索引;

    四、primary key 和 unique key的区别

        1. 作为Primary Key的域/域组不能为null。而Unique Key可以。

        2. 在一个表中只能有一个Primary Key,而多个Unique Key可以同时存在。更大的区别在逻辑设计上, Primary Key一般在逻辑设计中用作记录标识,这也是设置Primary Key的本来用意, 而Unique Key只是为了保证域/域组的唯一性。

    五、复合索引和单一索引

    复合索引是指多字段联合索引,查询时经常需要这几个字段组合一起为条件再查询唯一索引主要是用主键ID索引,存储结构顺序与物理结构一致。如:create  index  idx  on  tbl(a,b) 先按a排序, a相同的按b排序,所以当你查a或ab的时候,能够利用到这个索引.但当你只查b的时候,索引对你的帮助不大.可能可以跳跃查找.




我超级酷,但是如果你回复我的话我可以不酷那么一小会儿。


——来自logo.png


赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论