zoukankan      html  css  js  c++  java
  • 数据库的索引

      例如我们现在有表employee

      mysql> CREAT TABLE employee(eid INT PRIMARY KEY,

                                          fname VARCHAR(20),

                                          lname VARCHAR(20),

                                          fname_pinyin(40),

                                          lname_pinyin(40),

                                          depart VARCHAR(40),

                                          birth  DATE,

                                          sex  CHAR(1));

    • 未建索引时,当你select时,会进行全表扫描(全件检索)效率很低,创建索引和删除索引,查看本表所有索引的语句如下:

           mysql> CREAT INDEX index_name on tablename(columnname);

       mysql> DROP  index_name;

          mysql> SHOW INDEX;

    • 索引分为clustered indexnon-clustered index   

      一个表仅能有一个clustered index ,在mysql下一般默认会将primary key 设置为clustered index

         如果不想让primary key 成为clustered index 则可以在建表的时候对主键列的描述改为: eid INT PRIMARY KEY NONCLUSTERED

    • 在多个列上一起建的索引为复合索引 

      mysql> CREAT INDEX idx_fuhe on employee(lname_pinyin,fname_pinyin);

    • 在创建索引时加了UNIQUE就是唯一性索引。

      mysql> CREAT UNIQUE INDEX idx_uni on employee(fname_pinyin)

      对索引的唯一性限制就是对该列数据的唯一性限制,当再有新的数据插入,此新数据的该字段和表中已有记录的该字段相同,则插入操作会报错。

      当表中已有重复的数据,则创建唯一性索引会失败

          复合索引也可是唯一性索引,此时只需这几个字段的组合不出现重复项即可

    • 可以使用EXPLAIN 来看看SELECT语句使用索引的情况,尤其注意输出结果中rows的变化,以便来检查所建索引是否合适

       mysql> EXPLAIN SELECT * FROM employee WHERE lname=“wy”

  • 相关阅读:
    世界史上最著名的十大思想实验
    excel 鼠标上下左右移动
    excel 批注
    C# TextWriter类
    C#中的Hashtable
    cython安装、使用
    Java JsonPath grab InvalidPathException in code, you must be catching Java 7's java.nio.file.InvalidPathException instead of JsonPath's com.jayway.jsonpath.InvalidPathExceptio
    Java牛角尖【007】:Java中的Error能不能被Catch
    2016亚洲城市GDP50强出炉
    全国5A级旅游景区已达250家
  • 原文地址:https://www.cnblogs.com/ivywenyuan/p/4581839.html
Copyright © 2011-2022 走看看