• MySQL索引种类


    normal:表示普通索引

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

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

    PRIMARY, INDEX, UNIQUE 这是一类
    PRIMARY 主键。 就是 唯一 且 不能为空。
    INDEX 索引,普通的
    UNIQUE 唯一索引。 不允许有重复。
    FULLTEXT 是全文索引,用于在一篇文章中,检索文本信息的。

    1、普通索引

    最基本的索引,它没有任何限制,用于加速查询。

    创建方法:

    a. 建表的时候一起创建

    CREATE TABLE mytable ( name VARCHAR(32) , INDEX index_mytable_name (name) );

    b. 建表后,直接创建索引

    CREATE INDEX index_mytable_name ON mytable(name);

    c. 修改表结构

    ALTER TABLE mytable ADD INDEX index_mytable_name (name);

    注:如果是字符串字段,还可以指定索引的长度,在列命令后面加上索引长度就可以了(例如:name(11))

    2、唯一索引

    索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。

    创建方法:

    a. 建表的时候一起创建

    CREATE TABLE mytable ( `name` VARCHAR(32) , UNIQUE index_unique_mytable_name (`name`) );

    b. 建表后,直接创建索引

    CREATE UNIQUE INDEX index_mytable_name ON mytable(name);

    c. 修改表结构

    ALTER TABLE mytable ADD UNIQUE INDEX index_mytable_name (name);

    注:如果是字符串字段,还可以指定索引的长度,在列命令后面加上索引长度就可以了(例如:name(11))

    3、主键索引

    是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。一般是在建表的时候同时创建主键索引。

    创建方法:

    a. 建表的时候一起创建

    CREATE TABLE mytable ( `id` int(11) NOT NULL AUTO_INCREMENT , `name` VARCHAR(32) , PRIMARY KEY (`id`) );

    b. 修改表结构

    ALTER TABLE test.t1 ADD CONSTRAINT t1_pk PRIMARY KEY (id);

    注:如果是字符串字段,还可以指定索引的长度,在列命令后面加上索引长度就可以了(例如:name(11))

    4、组合索引

    指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用组合索引时遵循最左前缀集合。

    创建方法:

    a. 建表的时候一起创建

    CREATE TABLE mytable ( `id` int(11) , `name` VARCHAR(32) , INDEX index_mytable_id_name (`id`,`name`) );

    b. 建表后,直接创建索引

    CREATE INDEX index_mytable_id_name ON mytable(id,name);

    c. 修改表结构

    ALTER TABLE mytable ADD INDEX index_mytable_id_name (id,name);

    5、全文索引

    主要用来查找文本中的关键字,而不是直接与索引中的值相比较。

    fulltext索引跟其它索引大不相同,它更像是一个搜索引擎,而不是简单的where语句的参数匹配。

    fulltext索引配合match against操作使用,而不是一般的where语句加like。

    它可以在create table,alter table ,create index使用,不过目前只有char、varchar,text 列上可以创建全文索引。

    创建方法:

    a. 建表的时候一起创建

    CREATE TABLE `article` ( `id` int(11) NOT NULL AUTO_INCREMENT ,`title` char(250) NOT NULL , `contents` text NULL , `create_at` int(10) NULL DEFAULT NULL , PRIMARY KEY (`id`), FULLTEXT (contents) );

    b. 建表后,直接创建索引

    CREATE FULLTEXT INDEX index_article_contents ON article(contents);

    c. 修改表结构

    ALTER TABLE article ADD FULLTEXT INDEX index_article_contents (contents);

    总结

    虽然索引可以增加查询数据,但对于更新、创建或者删除的时候,需要去维护索引,导致性能会受影响,因此,索引也不能建立太多。

  • 相关阅读:
    集合类源码(六)Map(HashMap, Hashtable, LinkedHashMap, WeakHashMap)
    CycleBarrier与CountDownLatch原理
    Volatile和Synchronized
    集合类源码(五)Collection之BlockingQueue(LinkedTransferQueue, PriorityBlockingQueue, SynchronousQueue)
    集合类源码(三)Collection之List(CopyOnWriteArrayList, Stack)
    集合类源码(二)Collection之List(ArrayList, LinkedList, Vector)
    集合类源码(一)概述
    Java ReentrantLock中tryLock与lock的区别(非公平锁与公平锁)
    Arctime制作视频字幕教程
    用Pr对视频画面进行裁剪
  • 原文地址:https://www.cnblogs.com/Rivend/p/12099972.html
Copyright © 2020-2023  润新知