zoukankan      html  css  js  c++  java
  • [日常] 高性能MySQL-索引

    1.mysql的索引工作类似一本书的目录部分,想找某个特定主题,先查找书的目录部分,找到对应的页码
    2.ORM工具只能生成基本的合法的查询
    3.索引是在存储引擎层实现的,不是服务器层
    4.B-tree就是指的B树,多叉平衡查找树,很多存储引擎使用的b+树,降低磁盘I/O操作,将随机i/o变成顺序i/o
    5.b树意味着所有的值是按顺序存储的,每个叶子页到根的距离相同,叶子页存储了指向下一个叶子页的指针
    6.存储引擎不需要全表扫描,从索引的根节点开始进行搜索
    7.b树索引还可以用于order by和group by 操作
    8.只有memory引擎显式支持哈希索引,只支持等值比较=查询速度非常快
    9.在b树基础上创造伪哈希索引,自定义个哈希函数加个字段存储,查询语句类似:select * from test where crc_32('haha') and content='haha'
    10.三星评价系统:一星 索引将相关记录放一起;二星 数据顺序和查找顺序一致;三星 索引中包含了全部查询列
    11.扩展:增加个元数据信息表,例如"哪个用户的信息存储在哪个表中"

    高性能的使用索引策略
    1.独立的列
    2.前缀索引和索引选择性; 每个列的前几个字符 和 不重复的索引对总记录数的比值
    尽量让这个前缀的选择性和完整列的选择性接近,选择性越高越好,这样索引会小点
    select count(distinct name)/count(*) as sel from test
    3.多列索引,注意是否出现索引合并现象
    4.选择合适的索引列顺序
    选择性高的字段放在前面
    5.聚簇索引,innodb支持
    6.覆盖索引,不需要回表

  • 相关阅读:
    详解go语言的array和slice 【一】
    node.js 事件循环
    搭建Docker私有仓库--自签名方式
    详解JavaScript闭包
    [个人翻译]Redis 集群教程(下)
    转:CMake 使用方法
    转: Ogre实现无缝地图要改的地方 记下来 用的时候可以看
    转:ogre的编译及安装
    转:Ogre TerrainGroup地形赏析
    转:如何编译delta3d
  • 原文地址:https://www.cnblogs.com/taoshihan/p/9042098.html
Copyright © 2011-2022 走看看