zoukankan      html  css  js  c++  java
  • 索引

    索引


    索引相当于图书的目录,可以帮助用户快速的找到需要的内容.
    数据库利用各种各样的快速定位技术,能够大大提高查询效率。特别是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速度加快成千上万倍.

    索引好处:可以提高查询效率,而且是数据量越大效果越明显.
    索引缺点:添加数据和删除数据效率低

    索引类型

    1、HASH:

    hash就是一种(key=>value)形式的键值对,允许多个key对应相同的value,但不允许一个key对应多个value,为某一列或几列建立hash索引,就会利用这一列或几列的值通过一定的算法计算出一个hash值,对应一行或几行数据.   hash索引可以一次定位,不需要像树形索引那样逐层查找,因此具有极高的效率.

    假设创建如下一个表:

    CREATE TABLE testhash (
        fname VARCHAR(50) NOT NULL,
        lname VARCHAR(50) NOT NULL,
        KEY USING HASH(fname)
    ) ENGINE=MEMORY;

    包含的数据如下:

    假设索引使用hash函数f( ),如下:

    f('Arjen') = 2323
    f('Baron') = 7437
    f('Peter') = 8784
    f('Vadim') = 2458

    此时,索引的结构大概如下: 

    Slots是有序的,但是记录不是有序的。当你执行

      mysql> SELECT lname FROM testhash WHERE fname='Peter';

    MySQL会计算’Peter’的hash值,然后通过它来查询索引的行指针。因为f('Peter') = 8784,MySQL会在索引中查找8784,得到指向记录3的指针。
    因为索引自己仅仅存储很短的值,所以,索引非常紧凑。Hash值不取决于列的数据类型,一个TINYINT列的索引与一个长字符串列的索引一样大。

    2、BTREE

    就是一种将索引值按一定的算法,存入一个树形的数据结构中. 如二叉树一样

    索引分类:
      1. 普通索引
      2.唯一索引
      3.主键索引
      4.组合索引
      5. FULLTEXT:全文索引
    目前只有MyISAM引擎支持。而且只有 CHAR、VARCHAR ,TEXT 列上可以创建全文索引

    FULLTEXT索引是按照分词原理建立索引的。西文中,大部分为字母文字,分词可以很方便的按照空格进行分割。但很明显,中文不能按照这种方式进行分词。那又怎么办呢?这个向大家介绍一个Mysql的中文分词插件Mysqlcft,有了它,就可以对中文进行分词,想了解的同学请移步Mysqlcft,当然还有其他的分词插件可以使用。

    创建索引

    1.创建 普通索引

    1 CREATE UNIQUE index aaa on ren(p_age)
    2 添加唯一索引
    3 注意:unique index :表示唯一索引 aaa:表示索引的别名, on:表示给哪个表添加索引  ren:表名称,(添加索引的字段,多个字段以","间隔)

    2.创建 唯一索引

    1 CREATE UNIQUE index aaa on ren(p_age)
    2 添加唯一索引
    3 注意:unique index :表示唯一索引 aaa:表示索引的别名, on:表示给哪个表添加索引  ren:表名称,(添加索引的字段,多个字段以","间隔)

    3.创建 主键索引

    1 alter table 表名 add primary key(id);
    2 添加之间索引
    3 注意:主键索引只能有一个

    4.创建 组合索引 

    1 create index id_name on ren (id,name)
    2 添加组合索引
    3 注意: 如上创建组合索引之后,查询:
    4 id and name-- 使用索引
    5 id                -- 使用索引
    6 name           -- 不使用索引
  • 相关阅读:
    videojs播放直播源rtmp时画面在左上角解决方案
    常用git操作命令
    vue使用vue-video-player在直播中的应用
    element-ui隐藏组件scrollbar的使用
    Array.reduce()学习
    阿里云物联网套件(iot)设备间通信(M2M)在web端的实践
    前端axios下载excel(二进制)
    nodejs连接阿里云物联网套件(mqtt)
    base64格式图片转换为FormData对象进行上传
    NodeJS之微信开发
  • 原文地址:https://www.cnblogs.com/zhzhlong/p/9300818.html
Copyright © 2011-2022 走看看