zoukankan      html  css  js  c++  java
  • 关于索引

    索引

      索引是一种快速访问数据的途径,可提高数据库性能。索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需的数据。通过建立索引能提高查询的性能。

      一般来说,select、update、delete命令的where子句性能会得到提高,但是insert(对标和索引都进行插入)、索引列update、大量数据的delete的性能会降低。

    索引的分类

      逻辑分类:单列索引、组合索引、唯一索引、非唯一索引,函数索引。

      物理分类:区分索引、非分区索引、B树索引、正向索引、反向索引,位图索引。

    索引的缺点:

        1、索引占用表空间,创建太多索引可能会造成索引冗余。

        2、索引会影响INSERT、UPDATE、DELETE语句的性能。

    使用索引的原则:    

        1、装载数据后再建立索引。

        2、频繁搜索的列可以作为索引。

        3、在联接属性上建立索引(主外键)。

        4、经常排序分组的列。

        5、删除不经常使用的索引。

        6、指定索引块的参数,如果将来会在表上执行大量的insert操作,建立索引时设定较大的ptcfree。

        7、指定索引所在的表空间,将表和索引放在不同的表空间上可以提高性能。

        8、对大型索引,考试使用NOLOGGING子句创建大型索引。

        不要在下面的列创建索引:   

        1、仅包含几个不同值得列。

        2、表中仅包含几条记录。

    btree 索引

    优点:适合键值重复率较低的字段上使用
    那么有个B-tree索引我们就像翻书目录一样,直接定位rowid立刻就找到了我们想要的数据,实质减少了I/O操作就提高速度,它有一 个显著特点查询性能与表中数据量无关
    缺点:不适合键值重复率较高的字段上使用,

    位图索引

    位图索引适合于:列的基数很少,可枚举,重复值很多,数据不会被经常更新,由于一个键值对应很多行(rowid), 更新索引键值的时候,就会锁定索引,导致其他行不可被修改,阻塞。
    优点:OLAP 例如报表类数据库 重复率高的数据 特定类型的查询例如count、or、and等逻辑操作因为只需要进行位运算即可得到我们需要的结果
    缺点:不适合重复率低的字段,还有经常DML操作(insert,update,delete),因为位图索引的锁代价极高,修改一个位图索引段影响整个位图段,例如修改
    一个键值,会影响同键值的多行,所以对于OLTP 系统位图索引基本上是不适用的

    主键索引和唯一索引

    主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。

    主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。
    唯一性索引列允许空值,而主键列不允许为空值。主键列在创建时,已经默认为空值 + 唯一索引了。
    主键可以被其他表引用为外键,而唯一索引不能。一个表最多只能创建一个主键,但可以创建多个唯一索引。
    主键更适合那些不容易更改的唯一标识,如自动递增列、身份证号等。

    唯一索引的好处:

      一是简化了MySQL对这个索引的管理工作,这个索引也因此而变得更有效率;

      二是MySQL会在有新记录插入数据表时,自动检查新记录的这个字段的值是否已经在某个记录的这个字段里出现过了;如果是,MySQL将拒绝插入那条新记录。也就是说,唯一索引可以保证数据记录的唯一性。

    事实上,在许多场合,人们创建唯一索引的目的往往不是为了提高访问速度,而只是为了避免数据出现重复。

    主索引 

      必须为主键字段创建一个索引,这个索引就是所谓的"主索引"。主索引与唯一索引的唯一区别是:前者在定义时使用的关键字是PRIMARY而不是UNIQUE。

  • 相关阅读:
    【原创】VNC-view配置
    【LVM】LVM自动扩容脚本
    【linux磁盘分区--格式化】fdisk,parted,mkfs.ext3
    【原】Centos 7 下创建LVM流程
    【Spring-AOP-学习笔记-7】@Around增强处理简单示例
    【转】libvirt kvm 虚拟机上网 – Bridge桥接
    【phantomjs】使用phantomjs生成highChart的图片(待完善)
    【Redis】使用Redis Sentinel实现Redis HA
    【Redis】配置redis主从复制
    【转载】优秀博文转载
  • 原文地址:https://www.cnblogs.com/lidedong/p/9900633.html
Copyright © 2011-2022 走看看