Skip to content

Latest commit

 

History

History
27 lines (23 loc) · 1.65 KB

tb_index.md

File metadata and controls

27 lines (23 loc) · 1.65 KB

索引设计

  1. 非唯一索引按照“i_字段名称_字段名称[_字段名]”进行命名。

  2. 唯一索引按照“u_字段名称_字段名称[_字段名]”进行命名。

  3. 索引名称使用小写。

  4. 索引中的字段数不超过5个。

  5. 唯一键由3个以下字段组成,并且字段都是整形时,使用唯一键作为主键。

  6. 没有唯一键或者唯一键不符合5中的条件时,使用自增(或者通过发号器获取)id作为主键。

  7. 唯一键不和主键重复。

  8. 索引字段的顺序需要考虑字段值去重之后的个数,个数多的放在前面。

  9. ORDER BY,GROUP BY,DISTINCT的字段需要添加在索引的后面。

  10. 单张表的索引数量控制在5个以内,若单张表多个字段在查询需求上都要单独用到索引,需要经过DBA评估。查询性能问题无法解决的,应从产品设计上进行重构。

  11. 使用EXPLAIN判断SQL语句是否合理使用索引,尽量避免extra列出现:Using File Sort,Using Temporary。

  12. UPDATE、DELETE语句需要根据WHERE条件添加索引。

  13. 对长度大于50的VARCHAR字段建立索引时,按需求恰当的使用前缀索引,或使用其他方法。

  14. 下面的表增加一列url_crc32,然后对url_crc32建立索引,减少索引字段的长度,提高效率。

    CREATE TABLE all_url(ID INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
    url VARCHAR(255) NOT NULL DEFAULT 0,      
    url_crc32 INT UNSIGNED NOT NULL DEFAULT 0,
    index idx_url(url_crc32));
    
  15. 合理创建联合索引(避免冗余),(a,b,c) 相当于 (a) 、(a,b) 、(a,b,c)。

  16. 合理利用覆盖索引。