索引-80%优化处理

 

mysql 索引-存储。

1.优化索引。

2.最优索引。

普通sql - 好的索引-最优索引

索引优点:--索引本来就是有序

1.1:减少扫描量

1.2:避免排序+避免临时表产生

1.3:随机I/O变为顺序I/O  固定硬盘 ssd iops-每秒查询次数。

1.4:可以减少查询锁定行。

 

串行硬盘。

 

B+Tree索性--mysql索引

二叉搜索树。

平衡的m路搜索树

==

聚族索引

主键+补助建、

二次查询,但是io控制的好,不损失,减少维护成本。适合更新多的。

 

非聚族索性

 

都是

InnoDB

=====================

表空间-区-页-16-块-4 

engine

14.6g

 

联合索引。

=========================================================

避免where 字句中 对字段+函数,避免格式转化等函数,否则索引就无效。

 

最左原则。计算索引值。双B关联,字符类型不一致,关联会查询换较慢。

mysql。

避免关联拆sql处理。主从分离-读写分离。

service存控制了。

水平拆表。

避免使用子查询。

 

总数:1. count() 2.统计某列除null外的数量。

 

联合索引-一次查询

============================================

分页:

 

limit 0,10;  size+计算初步偏移量。currentPage  。当期页和最终请求页的差值。

==============================

用户列表再次优化查询。

==============================

小表驱动大表才能left join

 

Theta书写sql;sql优化器。

select * from a,b where  a.a1.=b.b2;

 

=============================

数据挖掘。hadoop计算分析结果实时转到mysql中。 

复杂度-字典 索引记录关联吗?

=========================================

mysql离线报表,后台统计。

推荐系统-算法。

 分表-分库。

proxy-redis. mysql  区-页-块

跨行溢出式……

----------------------------------------

每个InnoDB表具有一个特殊的索引称为聚簇索引(也叫聚集索引,聚类索引,簇集索引)。

如果表上定义有主键,该主键索引就是聚簇索引。

如果未定义主键,MySQL取第一个唯一索引(unique)而且只含非空列(NOT NULL)作为主键,InnoDB使用它作为聚簇索引。

如果没有这样的列,InnoDB就自己产生一个这样的ID值,它有六个字节,而且是隐藏的,使其作为聚簇索引。

表中的聚簇索引(clustered index )就是一级索引,除此之外,表上的其他非聚簇索引都是二级索引,又叫辅助索引(secondary indexes)。