zoukankan      html  css  js  c++  java
  • mysql索引使用

    1.独立的列:
        索引不能使表达式的一部分,也不能是函数的参数。
        在where条件中,应该始终将索引列放在比较符号的一侧。
     
    2.前缀索引和索引的选择性:
        有时候需要索引很长的字符列,会让索引大且慢。
            除了使用在索引上建立哈希索引,还可以索引开始的部分字符。
            对于BLOB,TEXT或很长的VARCHAR类型来说,必须使用前缀索引,MySQL不允许索引这些列的完整长度。
     
    3.多列索引:
        常见错误:为每个列创建独立索引,或者按照错误的顺序创建多列索引。
        如果在EXPLAIN中看到有索引合并,应当好好检查查询和表的结构,也可以通过参数optimizer_switch来关闭索引合并功能,或者使用IFNORE INDEX提示优化器忽略某些索引。
     
    4.选择合适的索引列顺序
        通常把选择性最高的列放在前面是很好的。
        可能需要根据运行频率来调整索引列的顺序。
        
    5.聚簇索引
         聚簇索引并不是一种单独的索引类型,而是一种数据存储方式
         一个表只能有一个聚簇索引,不是所有的存储引擎都支持聚簇索引
         聚簇索引结构:叶子页包含了行的全部数据,节点页只包含索引列。
         MySQL通过主键来聚集数据,没有定义主键,会选择一个唯一的非空索引代替,如果没有这样的索引,innodb会隐式定义一个主键作为聚簇索引
         为什么二级索引需要两次索引查找?
              二级索引叶子节点中保存的不是指向行的物理位置的指针,而是行的主键值。这么做的好处是在innodb移动行时无需更新二级索引中的指针,坏处是占用了更多的空间。
         OPTIMIZE TABLE指令:重新使用未使用的空间,整理文件碎片。
              删除数据后,MySQL不会回收被删除数据占用的空间以及索引位,而是空在那里,等待新的数据填充。
         
         
        
            
  • 相关阅读:
    poj1286 polya计数法
    hdu 2079 普通母函数的应用
    hdu1521 指数型母函数 求解多重集排列数
    hdu1398 普通母函数的应用 解决多重集组合问题
    hdu1085 多重部分和问题
    二部图最大匹配问题的求解 匈牙利算法
    tarjan算法
    Prim算法
    无向图连通图(割)
    无向图找桥
  • 原文地址:https://www.cnblogs.com/wangzepu/p/11389726.html
Copyright © 2011-2022 走看看