MySQL索引-总结

来源:互联网 发布:手持数据采集器多少钱 编辑:程序博客网 时间:2024/06/06 19:26

索引:排好序的快速查找的数据结构

MySQL是插件式存储引擎,基于表的RDB,不同的表可以选择不同存储引擎

存储引擎 myisam innodb NDB, memory

阿里自己开发的alisql

myisam 不支持事务,支持表锁支持全文索引,查找效率非常高

innoDB 支持事务,行锁

电商项目 :订单表,商品表 基于业务

订单表:必须支持事务(交易)插入多 查询少 InnoDB
商品表:有后台人员录入,查询多插入少 myIsam


Btree索引 B-tree(多路搜索树,并不是二叉的,也不是平衡二叉树)是一种常见的数据结构。使用B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度。按照翻译,B 通常认为是Balance的简称。这个数据结构一般用于数据库的索引,综合效率较高

hash索引(局限性太多,基本不使用)

全文索引

Myisam balancetree 平衡二叉树 在系统文件存储 地址指针

在硬盘上有三部分组成
.myi 索引
.myd 数据
.frm 表结构
InnoDB 在硬盘上
.frm 表结构
.idb 索引和数据
(查找数据很大的话,要放在缓存中,会占用很多系统资源)

Myisam 非聚集索引(数据和索引分离)
InnoDB 聚集索引 (数据和索引分析)

这里写图片描述

如果这树有32层 ,这个表将有40亿的数据,没有索引的话查找,要很长时间
有索引的话就会32次就知道了logn

这里写图片描述

这里写图片描述

复合联合索引(多列索引)
复合索引(将多个列合起来做一个索引)复合索引,跟查询字段的顺序有关。where name = g and age = 20;查询高的放前面。

系统资源:IO, 磁盘, 缓存 ,CPU
索引提高检索的速度(降低IO读取)检索会消耗CPU

缺点:
占用存储空间
更新

若500w数据单表的查询的时候出现查询瓶颈考虑建立索引

不适合建立索引
1 更新频繁的字段不适合建立索引
2 where没有使用的字段
3 表的数据很少
4 数据重复(男女)并且分布比较均衡的字段
5 参与列计算的时候不适合建立索引

建立索引 sql解析(explain 执行计划) 缓存 增加机器 拆分(分库,分表(垂直,水平))

scale out 水平扩展 增加机器 集群负载 读写分离
scaleup 垂直扩展 提高计算机性能 增加CPU SSD

牛文:http://blog.jobbole.com/24006/

参考: http://blog.csdn.net/u014307117/article/details/47325091

原创粉丝点击