• NoteOfMySQL-07-索引


    一、索引简介

    1. 索引概述

      创建索引的目的是为了优化数据库的查询速度,不添加索引的情况下需要遍历所有数据才能进行删、查、改等操作。

    2. 索引存储类型

    存储类型 支持的存储引擎
    B型树(BTREE)索引 InnoDB、MyISAM
    哈希(HASH)索引 MEMORY

    3. 索引的优缺点

    3.1 优点

    • 加快数据检索速度。

    3.2 缺点

    • 增加创建索引、维护索引的时间。
    • 索引需要占据物理空间。
    • 增加索引时,会提高检索性能,但会降低修改性能;减少索引相反。

    4. 索引的特征

    4.1 唯一性索引

      保证唯一性,可以创建主键约束或唯一性约束,而不能只单单创建唯一性索引。

    4.2 复合索引

      复合索引是一个索引创建在两个列或者多个列上,搜索时,以这几个列作为关键值。

    • 最多可以把16个列合并成一个单独的复合索引。
    • 复合索引中,所有的列必须来自同一个表,不能跨表创建复合索引。
    • 复合索引中,列的排序顺序是很重要的,不能调换。

    5. 索引分类

      text、image、bit数据类型的列不应增加索引。

    5.1 普通索引

      普通索引可以创建在任何数据类型中,其值的约束由字段本身的完整性约束条件决定。

    5.2 唯一性索引(UNIQUE)

      设置索引唯一。主键就是一种特殊的唯一性索引。

    5.3 全文索引(FULLTEXT)

      全文索引只能创建在CHAR、VARCHAR、TEXT类型的字段上,全文索引可以提高对于数据量较大的字符串类型的查询速度。
      数据库从3.23.23版的MyISAM搜索引擎开始支持全文索引,直到5.6版,InnoDB也支持全文索引。

    5.4 单列索引

      在单列上创建索引。

    5.5 多列索引

      在多列上创建索引。

    5.6 空间索引(SPATIAL)

      空间索引只能创建在空间数据类型上,目前只有MyISAM搜索引擎支持空间检索,而且检索字段不能为null。MySQL中的控件数据类型包括GEOMETRY、POINT、LINESTRING、POLYGON等。

    二、索引管理

    1. 创建索引

    -- 创建表时
    create table table_name (
    	...
    	[UNIQUE | FULLTEXT] INDEX | key [index_name] (state [(length)] [ASC|DESC])
    );
    -- 创建表后
    create [UNIQUE | FULLTEXT] INDEX index_name on table_name(state[(length)] [ASC | DESC]);
    
    alter table table_name add [UNIQUE | FULLTEXT] INDEX|KEY [index_name] (state[(length)] [ASC|DESC]);
    

    2. 查看索引

    -- 法一
    show index from table_name[ from db_name];
    -- 法二
    MySQL show -k db_name table_name;
    
    返回的字段 说明
    table 表名称
    Non_unique 索引是否包含重复词
    key_name 索引名称
    Seq_in_index 索引中的列序号
    Column_name 列名称
    collation 列在索引中的存储方式
    cardinality 索引中唯一值的数目的估计值
    sub_part 部分被编入索引?数目:NULL
    packed 关键字如何被压缩
    null 列中含有NULL为YES,否则为NO
    Index_type 索引方法,如Btree、FullText、Hash、Rtree
    comment 评注

    3. 删除索引

    -- 法一
    drop index index_name on table_name;
    -- 法二
    alter table table_name drop index index_name;
    
  • 相关阅读:
    jquerymobile动态添加元素之后不能正确渲染解决方法
    HTML5的新事件
    Visual Studio 2010扩展让JS与CSS实现折叠
    移动web开发--meta 之 viewport
    QR code二维码简介及Qrencode库的移植与使用
    http,socks5,socks4代理的区别
    关于代理服务器的原理及用法
    MTK的线刷工具Flash_Tool的常见错误码
    承认吧 --- SVN你根本就不会用,细说SVN的那点事儿
    SSH协议介绍 --- 有用
  • 原文地址:https://www.cnblogs.com/bpf-1024/p/14059640.html
Copyright © 2020-2023  润新知