zoukankan      html  css  js  c++  java
  • mysql索引相关理解

    1.索引是高效获取数据的数据结构,

    2.唯一索引,索引值不重复unique

       create unique index 索引名 on 表名(字段)

      alter table 表名 add unique index 索引名(字段)

    3.主键索引 唯一索引的一种 primary key

       create table 表名(id int not null primary auto_increament)type=myism

    4.单列索引和多列索引(复合索引)

      复合索引用最左前缀的概念

    5.聚簇索引

      索引中键值的逻辑顺序决定表中的物理顺序,聚簇索引决定表中的物理顺序

      innodb主键就是聚簇索引,myisam没有聚簇索引

    6.show index from 表名 查看表的索引

        key_name ->索引类型 column_name ->索引字段

        cardinality ->索引基数 平均数组值=基数/总行数 越接近1表示越可能用到索引

       index_type -> 索引结构 fulltext b+tree

    7.b-tree性质

       m阶b-tree 

          ki表示关键字 k1<k2<k3<k4<k5<k6<k7<k8<kn  左子结点关键字的值<右子节点关键字的值

         pi表示指向子节点指针 左指针指向左节点 右指针指向右节点 p1指向值<k1<p2指向值<k2

         所有关键字必须唯一(myisam和innodb必须建主键的原因)

         节点-》 每个节点最多有 m 个子节点

                   根节点若非是叶子节点最少有两个子节点

                   非根非叶子节点至少有m/2个子节点

        关键字-》根节点关键字个数1-(m-1)

                     非根非叶子节点关键字(m/2-1) - (m-1)

         关键字数 +1 =指针数

      b+tree是b-tree的变体 关键字数 = 指针数

    8.myisam的索引结构

       myisam索引采用b+tree结构存储数据,索引指针指向键值地址,地址存储数据

       myisam的索引和数据是分离的 索引保存在 表名.myi 数据保存在 biaoming.myd文件

    9.innodb索引结构

       innodb索引结构跟myisam有明显区别 索引和数据存储在一起

                                                        支持事务-》三行隐藏数据列 db_row_id db_row_ptr db_row_id

       主键索引保存数据 辅助索引保存主键的值 -》索引主键索引越短越好,这样辅助索引也就越小

    10.myisam和innodb比较 

         myisam支持全文索引,顺序存储,索引叶子节点保存数据地址,辅助索引和主键差不多

         innodb支持事务,主键节点直接保存数据,辅助索引保存主键索引的值

         myisam键值分离 索引载入内存 innodb 键值保存在一起,索引和数据一起载入innodb缓冲池

    11.mysql的优化

         表数据类型

            -》尽量小-》使用能正确表示的最短的数据类型存储-》减少磁盘空间 内存 cpu使用

            -》避免使用null count统计列时会忽略null的行 不会用到索引

            -》尽量使用整型 int(1)和int(11)是一样的

        sql优化

            -》复合索引的最左前缀原则, where字段要和索引顺序保持一致

            -》复合索引会用到非第一列出现范围的一列 之后不会用到索引 第一列出现范围也不会用到索引

            -》or会遍历全表不会用到索引

        

        

  • 相关阅读:
    mysql各版本特点
    jQuery 获取文件后缀的方法
    jquery中动态效果
    常用CSS缩写语法总结
    判断两个时间这间间隔几分钟
    jQuery操作Cookie
    禁止表单自动提示缓存数据
    jQuery.lazyload
    Jquery.Sorttable 桌面拖拽自定义
    分享13款非常有用的 jQuery 插件
  • 原文地址:https://www.cnblogs.com/hellohell/p/6486473.html
Copyright © 2011-2022 走看看