zoukankan      html  css  js  c++  java
  • 2019.6.11_MySQL进阶一:索引

    所谓索引就是为特定的mysql字段进行一些特定的算法排序,比如二叉树的算法和哈希算法,哈希算法是通过建立特征值,然后根据特征值来快速查找。MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。

    索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。

    创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。

    实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。

    上面都在说使用索引的好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。

    建立索引会占用磁盘空间的索引文件。

     

    一、索引的类型

     

    1.UNIQUE唯一索引

     

    不可以出现相同的值,可以有NULL值。

     

    2.INDEX普通索引

     

    允许出现相同的索引内容。

     

    3.PRIMARY KEY主键索引

     

    不允许出现相同的值,且不能为NULL值,一个表只能有一个primary_key索引。

     

    4.fulltext index 全文索引

     

    上述前三种索引都是针对列的值发挥作用,但全文索引,可以针对值中的某个单词,比如一篇文章中的某个词,然而实际效用低下,因为只有myisam以及英文支持,并且效率让人不敢恭维。

     

    二、索引的创建

    索引的创建方法有3种:

    1.直接打开设计表,在索引栏目下添加索引。

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

    --例:只能添加这两种索引,不能添加主键索引和全文索引

    CREATE INDEX index_name ON table_name (column_list) 

    CREATE UNIQUE INDEX index_name ON table_name (column_list)

    eg:CREATE INDEX idx_ename ON emp(ename)

    3.ALTER TABLE适用于表创建完毕之后再添加。

    ALTER TABLE 表名 ADD 索引类型 (unique,primary key,fulltext,index)[索引名](字段名)

    ALTER TABLE table_name ADD INDEX index_name (column_list) -- 索引名,可要可不要;如果不要,当前的索引名就是该字段名。 

    eg:ALTER TABLE dept ADD INDEX idx_deptno (deptno)   #普通索引,索引名为idx_deptno

      ALTER TABLE dept ADD INDEX(deptno)    #普通索引,索引名默认为deptno

    ALTER TABLE table_name ADD UNIQUE (column_list)    #唯一索引

    ALTER TABLE table_name ADD PRIMARY KEY (column_list)   #主键索引

    eg:ALTER TABLE dept ADD PRIMARY KEY idx_deptno(deptno)

    ALTER TABLE table_name ADD FULLTEXT KEY (column_list)  #全文索引,一般不用

    三、索引的删除

    1.直接打开设计表,在索引栏目下删除索引。

    2.DROP INDEX:

    DROP INDEX index_name ON table_name

    eg:DROP INDEX deptno ON dept

    3.ALTER TABLE:

    ALTER TABLE table_name DROP INDEX index_name

    eg:ALTER TABLE dept DROP INDEX deptno

    PS:这两句都是等价的,都是删除掉table_name中的索引index_name

    4.删除主键索引

    ALTER TABLE table_name DRP PRIMARY KEY -- 删除主键索引,注意主键索引只能用这种方式删除

    eg:ALTER TABLE dept DROP PRIMARY KEY

     

    四、索引的查看与更改

     

    1.索引的查看

    show index from tablename

    eg:SHOW INDEX from dept

    2.索引的更改

    更改个毛线,删掉重建一个既可

     

     

     

    一行代码一行诗
  • 相关阅读:
    CCPC 2020 长春站 部分简略题解
    atcoder arc106 D Powers
    循环节与拓展欧拉定理(广义欧拉降幂)
    最长公共上升子序列 题解
    namomo fish round1 A~C题解
    Codeforces Round #666 (Div. 2) A~E题解
    Educational Codeforces Round 93 Div2 A~E题解
    Codeforces Round #578 Div2 1200 A~E题解
    UVA11997 K Smallest Sums 题解
    LCA模板
  • 原文地址:https://www.cnblogs.com/huainanhai/p/11007117.html
Copyright © 2011-2022 走看看