mysql开发规范文档(二)
rracuda文件格式包含两种新的行记录格式:Dynamic和Compressed。Compressed对于字符类型数据有很好压缩功能,可以提高效率
2.2.5.创建合适所索引
索引需要额外的维护成本、访问成本和空间成本,所以创建索引一定要谨慎,使单个索引尽量覆盖多的sql,更新频率比较高的表要控制索引的数量。
A. 对于非常大更新量的数据,索引的维护成本会非常高,如果其检索需求很少,而且对检索效率并没有非常高的要求的时候,并不建议创建索引,或者是尽量减少索引。
B. 对于数据量极小到通过索引检索还不如直接遍历来得快的数据,也并不适合使用索引。
C. 应该尽量让查找条件尽可能多的在索引中,尽可能通过索引完成所有过滤,回表只是取出额外的数据字段。
D. 字段的顺序对组合索引效率有至关重要的作用,过滤效果越好的字段需要更靠前
E. 需要读取的数据量占整个数据量的比例较大或者说索引的过滤效果并不是太好的时候,使用索引并不一定优于全表扫描。
F. 在实际使用过程中,一次数据访问一般只能利用1个索引,这一点在索引创建过程中一定要注意,不是说一条SQL语句中Where子句里面每个条件都有索引能对应上就可以了.
G.在高并发环境不要使用外键,太容易产生死锁,应由程序保证约束
H.字符字段必须使用前缀索引。
3. 开发注意事项
3.1 不在索引列上进行数学运算或函数运算
3.2 避免大sql,拆解多个小sql
3.3 避免是用select *
3.4 用in() /union替换or,并注意in的个数小于300
3.5 避免使用%前缀模糊前缀查询
3.6 避免使用子查询
----end----