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”

  • 相关阅读:
    asterisk 使用 g729 g723
    读书笔记《一线架构师》
    能和LoadRunner匹敌的VS2010/2012Web负载测试
    总结 设计模式,企业应用架构模式,架构模式
    聊聊Memcached的应用
    WPF小试牛刀
    读书笔记《Hadoop开源云计算平台》
    高性能与可扩展
    闲聊下架构、框架,以及架构师...
    自己写框架 实践 (Event Framework)
  • 原文地址:https://www.cnblogs.com/ivywenyuan/p/4581839.html
Copyright © 2011-2022 走看看