标签:高效 img 指针 种类型 主键 iostat 需要 没有 文件的
索引会影响order by 的排序和where后面条件查
为了加快Col2的查找,可以维护一个右边所示的二叉查找树,每个节点分别包含索引键值和一个指向对应数据记录物理地址的指针,这样就可以运用二叉查找在一定的复杂度内获取到相应数据,从而快速检索出符合条件记录。
我们平常所说的索引,如果没有特别指明都是B树结构组织索引,其中聚集索引,次要索引,符合索引,前缀索引,唯一索引默认都是使用B+树索引,统称索引,当然,除了B+树这种类型的索引之外,还有哈希索引等。
索引劣势:实际上索引是一张表,该表保存主键与索引字段,并指向实体表的记录,所以索引列也是要占用空间的。虽然索引大大提高查询速度,同会降低更新表速度,如对表INSERT,UPDATE和DELETE.因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件每次更新调价了索引列的字段,都会调整因为更新带来的键值变化后的索引信息。索引只是提高效率的一个因素,如果你的MySQL有大数据量的表,就需要花时间去研究建立最优秀的索引。
单值索引: 即一个索引只包含单个列,一个表可以有多个单列索引
唯一索引: 索引列的值必须唯一,但允许有空值
复合索引: 即一个索引包含多个列
BTree索引
真实情况是,3层的B+树可以表示上百万的数据,如果上百万的数据查找只需要三次IO,性能提高将是巨大的,如果没有索引,每个数据项都要发生一次IO,那么总共需要百万次的IO,显然成本非常高。
Hash索引
full-text全文索引
R-Tree索引
表记录太少。300W以上数据SQL性能会下降,官方500-800W
经常增删改
数据重复且分布平均的表字段。
e.g.:假如一个表有10万行记录,有一个字段A中有T和F两种值,且每个值的分布概率大概为50%,那么对这种表A字段建立索引一般不会提高数据库的查询速度
索引的选择性是指索引列中不同值的数目与表中记录数的比,如果一个表中有2000条记录,表索引列有1980个不同的值,那么这个索引的选择性就是1980/2000=0.99,一个索引的选择性越接近1,这个索引效率就越高。
CPU: CPU在饱和时候一般发生在数据装入内存或从磁盘上读取数据时候
IO:磁盘I/O瓶颈发生在装入数据远大于内存容量的时候
服务器硬件的性能瓶颈(通过top,free,iostat 和vmstat来查看系统性能状态)
标签:高效 img 指针 种类型 主键 iostat 需要 没有 文件的
原文地址:https://www.cnblogs.com/xujunkai/p/12491335.html