基于myisam存储引擎做报表、索引

(1)很多年前的报表系统:

 

 

 

 

(2)B-树 

左边小,右边大,介于中间进入下一层

 

 (3)B+树

非叶子节点,不存储data,只存储索引key

 

 (4)b+树优化

叶子检点之间加顺序指针,方便范围查找

 

 (5)myisam存储引擎的索引

数据文件和索引文件是分开的

 

 (6)innodb存储引擎的索引

必须有主键,数据文件本身就是个索引文件,这个索引默认根据主键建立的,叫做聚簇索引

 

索引文件既是索引文件,又是数据文件,查找到索引位置,再取数据

 

对非主键字段建立的索引

name=索引 --> 叶子节点 --> 主键 --> 根据主键去找数据

 

 

 备注:

1. 不要用长字符串字段做索引,会占用很大空间

2. 主键索引尽量设置 auto-increase

 

(7)索引的使用规则

select * from table where a=1 and b=2 and c=3,怎么建索引?

1. 会根据平时常用几个字段,建立一个联合索引

<1> 全列匹配

<2> 最左前缀匹配原则

<3> 前缀匹配  %

<4> 范围列匹配

<5> 包含函数

 

(8)索引的缺点和注意项

缺点:占用磁盘文件,高并发下频繁插入和修改索引会导致性能损耗

 

建议:尽量创建少的索引,一个表一两个索引

1. status就2个值0和1,建立索引,几乎跟全表扫描差不多

2. select count(distinct col)/count(*) 的占比

3. 长字符串字段,可以用前几个字符建立索引

 

(9)代码处理

尽量SQL语句单表查询,避开join,需要join时尽量在Java代码里处理

用mysql当在线即时存储,存数据,简单取数据,不要在mysql中进行计算

posted @ 2022-04-11 14:00  狒狒桑  阅读(49)  评论(0)    收藏  举报