• mysql 索引


    索引类型:

           normal:表示普通索引(常用)

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

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

    索引方式:

             (推荐)B-Tree:B-Tree 索引是 MySQL 数据库中使用最为频繁的索引类型,除了 Archive 存储引擎之外的其他所有的存储引擎都支持 B-Tree 索引。不仅仅在 MySQL 中是如此,实际上在其他的很多数据库管理系统中B-Tree 索引也同样是作为最主要的索引类型,这主要是因为 B-Tree 索引的存储结构在数据库的数据检 索中有非常优异的表现

      (不推荐)Hash :(1)Hash 索引仅仅能满足"=","IN"和"<=>"查询,不能使用范围查询。由于 Hash 索引比较的是进行 Hash 运算之后的 Hash 值,所以它只能用于等值的过滤,不能用于基于范围的过滤,因为经过相应的 Hash 算法处理之后的 Hash 值的大小关系,并不能保证和Hash运算前完全一样

                            (2)Hash 索引无法被用来避免数据的排序操作

                            (3)Hash 索引不能利用部分索引键查询

                            (4)Hash 索引在任何时候都不能避免表扫描

            (5)Hash 索引遇到大量Hash值相等的情况后性能并不一定就会比B-Tree索引高

    创建索引语句:

           在执行CREATE    TABLE语句时可以创建索引,也可以单独用CREATE    INDEX或ALTER    TABLE 来为表增加索引。

          1.ALTER   TABLE

          ALTER TABLE 用来创建普通索引、UNIQUE索引或PRIMARY  KEY索引

          ALTER TABLE table_name ADD INDEX  index_name (column_list);    

          ALTER TABLE table_name ADD UNIQUE(column_list);(定义唯一)

          ALTER TABLE table_name ADD PRIMARY KEY (column_list);(定义主键)

    其中table_name是要增加索引的表名,cloumn_list指的是要添加索引的列,多列时用”,”隔开,索引名index_name可选,缺省时,mysql将根据第一个索引列赋一个名称另外,ALTER TABLE允许在单个语句中更改多个表,因此可以同时创建多个索引

          2.CREATE INDEX

          CREATE INDEX 可对表增加普通索引或UNIQUE索引

          CREATE INDEX index_name ON table_name (column_list);

          CREATE UNIQUE INDEX index_name ON table_name (column_list);

    table_name、index_name和column_list具有与ALTER TABLE语句相同的含义,索引名可不选,特别注意不能用CREATE INDEX语句创建PRIMARY KEY索引

          在创创建索引时,可以规定索引能否包含重复值。如果不包含应该用PRIMARY KEY或UNIQUE索引。对于单列唯一性索引,这保证单列不包含重复的值。对于多列唯一索引,保证多个值的组合不重复。PEIMARY KEY 索引和UNIQUE索引非常相似。PRIMARY KEY索引仅是一个具有名称PRIMARY的UNIQUE索引。这表示一个表只能包含一个PRIMARY KEY,因为一个表中不可能具有两个同名的索引

          删除索引

          可利用ALTER TABLE 或 DROP INDEX 语句来删除索引,类似CREATE INDEX语句,DROP INDEX可以在ALTER TABLE内部作为一个语句处理

          DROP INDEX index_name ON table_name;

          ALTER TABLE table_name DROP INDEX index_name;

          ALTER TABLE table_name DROP PRIMARY KEY

          其中前两句是等价的,删除掉table_name中的索引index_name,第三条语句只在删除PRIMARY KEY索引时使用,因为一个表只可能有一个PRIMARY KEY索引,所以不需要指定索引名,如果没有创建PRIMARY KEY 索引,但是表中有UNIQUE索引,则会将第一个UNIQUE索引删除。     

          如果从表删除了某列,则索引会受到影响。对于多列组合的索引,如果删除了其中某列,则该列也会从索引中删除。如果删除组成索引的所有列,整个索引将被删除。

          查看索引

          SHOW INDEX FROM table_name;

          SHOW KEYS FROM table_name;

    Table : 表名

    Non_uniqe:如果索引不能包括重复词,则为0,否则为1.

    Key_name:索引的名称

    Seq_in_index:索引中的列序列号,从1开始。

    Column_name:列名称

    Collation:列以什么方式存储在索引中。Mysql中,有值’A’(升序)或NULL(无分类)

    Cardinality:索引唯一值的数目估计值。通过运行ANALYZE TABLE或myisamchk –a可以更新。基数根据被存储为整数的统计数据来计数,所以即使对于小型表,改值也没有必要是精确的。基数越大,当进行联合时,mysql使用该索引的机会就越大。

    Sub_part:如果列只是被部分编入索引,则为被编入索引的字符的数目。如果整列被编入索引,则为NULL

    Packed:指示关键字如何被压缩。如果没有被压缩,则为NULL

    Null:如果列含有NULL,则含有YES。如果没有则该列含有NO。

    Index_type:用过的索引方法(BTREE,FULLTEXT,HASH,RTREE)

  • 相关阅读:
    android开发 退出程序
    armeabi和armeabi-v7a引起的问题
    我的博客
    第二章 应用层(一) 应用层概览
    第一章 计算机网络和因特网
    Linux学习笔记——第一篇——Ubuntu安装与操作
    怒学Python——完结篇——I/O
    怒学Python——第四篇——函数与模块
    怒学Python——第三篇——结构控制
    怒学Python——第二篇——类型与运算
  • 原文地址:https://www.cnblogs.com/wangjinyu/p/8044041.html
Copyright © 2020-2023  润新知