zoukankan      html  css  js  c++  java
  • sql 索引理解

    参考文献:
    https://juejin.im/post/5b66df616fb9a04fcd5875f8 
    http://database.51cto.com/art/200910/156685.htm
     
    一、  聚族(聚集)索引的数据存储方式
          1、聚集索引:            
                 InnoDB 支持聚簇索引,聚簇索引和非聚簇索引严格来说不是一种索引,而是一种数据存储方式,这个名字跟它本身的存储方式有关系,“聚簇“表示数据行和相邻的键值存储在一起,简单的说,就是叶子节点中存储的实际是真实的数据。InnoDB 通过主键聚集数据,所以一个表只能有一个聚簇索引,且必须有主键,如果没有定义主键,且不存在非空索引可以代替,InnoDB 会隐式定义一个主键作为聚簇索引
          2、非聚集索引
     
    二、索引类型:主键索引、唯一索引、普通索引、全文索引
            1、普通索引:无任何限制   CREATE INDEX INDEXNAME ON MyTable(userName(length))
            2、唯一索引:出现的列值必须唯一
            3、主键索引:该列必须是PRIMARY KEY
            4、全文索引:alter table 表名 add FULLTEXT(`字段名`);
            5、组合索引:ALTER TABLE mytable ADD INDEX name_city_age (name(10),city,age); 
    组合索引说明:MySQL组合索引“最左前缀”的结果
     --会用到索引
           SELECT * FROM mytable WHREE username="admin" AND city="郑州" 
             SELECT * FROM mytable WHREE username="admin"   
     --不会用到索引
             SELECT * FROM mytable WHREE age=20 AND city="郑州" 
             SELECT * FROM mytable WHREE city="郑州"
            
    三、索引的使用时机:
             <,<=,=,>,>=,BETWEEN,IN,LIKE ‘aaa%’才会使用索引。
    四、索引注意事项:
           1、索引不会包含有NULL值的列
           2、索引列排序 :一个sql 只会用到一个索引,所以如果where 子句使用了索引那么order by 的列就不会用
           3、只有又匹配的索引才能使用索引
           4、不要在列上进行运算因为不会使用索引
           5、使用 not in 与 <> 不会进行索引
  • 相关阅读:
    存储过程生成POCO
    Asp.net MVC4与Razor呈现图片的扩展
    Html5中新input标签与Asp.net MVC应用程序
    HTML5上传文件显示进度
    JQuery图表插件之Flot
    用Html5与Asp.net MVC上传多个文件
    TSQL列出最后访问的存储过程
    Asp.net MVC 限制一个方法到指定的Submit按钮
    VisualStudio2012轻松把JSON数据转换到POCO的代码
    Apache Tika源码研究(三)
  • 原文地址:https://www.cnblogs.com/lanSeGeDiao/p/10641550.html
Copyright © 2011-2022 走看看