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”

  • 相关阅读:
    sublime & atom 插件
    正则表达式必知必会读书笔记
    前端自动化工具
    CSS3效果收集
    JS 常用功能收集
    【1】Hover 效果收集
    javascript进阶高手必备知识
    ionic 实现仿苹果手机通讯录搜索功能
    ionic2APP 如何处理返回键问题
    三张图搞懂JavaScript的原型对象与原型链
  • 原文地址:https://www.cnblogs.com/ivywenyuan/p/4581839.html
Copyright © 2011-2022 走看看