规范

  1. 表的字段不要太多,上限20-50

  2. 数据库不做运算

  3. 控制单表数据量 含char 不超过500 w

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    use information_schema;
    
    该库中有一个 TABLES 表,这个表主要字段分别是:
    TABLE_SCHEMA : 数据库名
    TABLE_NAME:表名
    ENGINE:所使用的存储引擎
    TABLES_ROWS:记录数
    DATA_LENGTH:数据大小
    INDEX_LENGTH:索引大小
    
    # 查看指定库的大小
    select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data  from TABLES where table_schema='jishi';
    
    # 查看指定库的指定表的大小
    select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data  from TABLES where table_schema='jishi' and table_name='a_ya';
    
    # 查看指定库的指定表的索引大小
    SELECT CONCAT(ROUND(SUM(index_length)/(1024*1024), 2), ' MB') AS 'Total Index Size' FROM TABLES  WHERE table_schema = 'test' and table_name='a_yuser'; 
    
  4. 拒绝3B

    • 大sql
    • 大事务
    • 大批量
  5. 用好数据类型:确定好数据的最大范围,之后定义数据的位数。

    有的只是标志位的话,就可以使用tinyint(1) 来表示

  6. 可以用无符号int 来存储ip

  7. 避免使用null 字段, 数据库表中的列最好设置初始值,或者设置成NOT NULL

  8. 少用text 字段,效率很慢,强制生成临时表,消耗空间。varchar(65535) > 64k

    使用时可以拆分成独立的表

  9. 尽量不使用外键

  10. 字符字段必须建立前缀索引

  11. 忌用字符串做主键

  12. 使用自增字段作为主键

  13. 多sql ,而不是大sql

  14. 事务/连接原则:即开即用,用完即关;多个短事务代替长事务

  15. 尽量不要使用 select * .会查询所有列,之后丢弃不需要的列

  16. 使用union 来代替or

  17. 避免负向查询【NOT LIke】,前缀模糊查询 【%,这个尽量放在查询参数的后半段】:

  18. count(*) 开销巨大,能不用就不用

  19. union all 来代替 union , union 有去重,如果不关心有重复的字段时可以使用union all

  20. 不建议进行两个表以上的join

  21. Group by NULL无需排序,性能会好一点

  22. 统一使用字符集UTF8 ,校对规则: utf8_general_ci

  23. 索引名称默认 idx_

Built with Hugo
主题 StackJimmy 设计

本站访客数 人次   总访问量   本文阅读量