标签:不用 规则 覆盖 性能 插入 inno myisam like 主键索引
定长与边长相分离
常用与不常用相分离
适当反范式
int > date,time > enum,char > varchar > blob,text
字符串相对于整形要考虑字符集和校对集
尽量不用NULL
有必要使用联合索引(多列索引、复合索引)(左前缀原则)要考虑列顺序
分析sql
explain 查询语句 \G;
innodb 次级索引指向对主键的引用(因为主键索引下是数据)
页分裂:按主键重新排序组织数据
innodb 防止页分裂 避免主键不规则插入
索引覆盖:查询的数据不回行直接在索引树上就能找到
注意:innodb的叶子不要太过沉重,否则查询会较慢
set profiling=1(打开)
show profiles
show profile cpu,block,io for query 查询语句的id
set profiling=0(关闭)
1、常用
2、区分度高
3、长度较小
4、尽量覆盖常用索引
较长字段建索引办法:
只取前几位(直到区分度相当较高)创建索引(create index 索引名 on 表名 列名(长度))
或者(alter table 表名 add index 索引名 on 列名(长度))
重复较多字段建索引办法:
1、倒叙 2、伪哈希算法(新增一个字段,存这个字段的hash,然后在这个字段上建立索引)
多列索引:
ALTER TABLE article ADD INDEX index_titme_time (title(50),time(10))
避免查询产生filesort
禁止重复索引 可以冗余索引
整理索引碎片(optimize table 表名)表优化
show status like "_tables%";(查看有没有发生在磁盘上的排序)
强制使用索引:(不推荐)
最后也是最重要的一点:结合实际优化索引
标签:不用 规则 覆盖 性能 插入 inno myisam like 主键索引
原文地址:https://www.cnblogs.com/ttyx/p/14642447.html