博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[日常] 高性能MySQL-索引
阅读量:6681 次
发布时间:2019-06-25

本文共 709 字,大约阅读时间需要 2 分钟。

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.覆盖索引,不需要回表

转载地址:http://wlxao.baihongyu.com/

你可能感兴趣的文章
Redhat内核编译
查看>>
Hyper-V 2016 系列教程4 Hyper-V 虚拟机的新建
查看>>
Flask开发
查看>>
trickle 限制用户空间带宽
查看>>
SQL事务
查看>>
GRE配置案例实现远程网络通信
查看>>
不用linux作为桌面的N个理由
查看>>
Rabbitmq学习之路3-cluster
查看>>
iptables实现NAT(网络搜索整理)
查看>>
关于ip地址
查看>>
ASP.NET自定义404和500错误页面
查看>>
OpenGL学习(七)纹理映射
查看>>
一些必不可少的Sublime Text 2插件
查看>>
测试项目
查看>>
第一章ASP.NET SignalR简介
查看>>
SSH
查看>>
41-50(UIApplication和delegate,UIApplicationMain,UIWindow,程序启动的完整过程,控制器view的延迟加载)...
查看>>
HTTP服务器实现
查看>>
2017.03
查看>>
未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项
查看>>