GeekerCode更好的WordPress主题,值得信任的WordPress主题开发商

极美的主题、极致的插件

非常高效率的MySQL数据库设计、使用准则

摘要:以下是共25条关于MySQL数据库设计、使用准则:尽可能少的依赖MYSQL自身的特性select、update、delete大数据量的表全部由主键完成所有MYSQL语句一律封装好再使用,业务层绝对不能使用MYSQL语句不得使用外键(数据一致

以下是共25条关于MySQL数据库设计、使用准则:

  1. 尽可能少的依赖MYSQL自身的特性
  2. select、update、delete大数据量的表全部由主键完成
  3. 所有MYSQL语句一律封装好再使用,业务层绝对不能使用MYSQL语句
  4. 不得使用外键(数据一致性、完整性、可靠性自行把握备份维护)
  5. 表和字段命名、自定义方法、声明数组、变量、以及 css 定义class 和 id,包括表单,不管是 php 还是 js 还是 html ,命名务必使用 唯一前缀_单词(下划线"_"分割) 不要使用拼音
  6. 一般不要乱创建索引,一个库建议不超5个;实在要新增时,在副表建,完后灌水最少100万测试性能。索引以左优先原则创建。
  7. 禁止使用未建索引的查询
  8. 使用 int、tinyint 类型建立有效索引,尽量少使用或不使,用 char 或 varchar 类型建立索引
  9. 禁止在状态 status 字段上建立索引,因为在海量数据下筛选为数不多的数据,得不偿失
  10. 禁止使用索引类型 UNIQUE 所有业务逻辑在程序中完成
  11. 禁止在 mysql 做运算查询,如 where views>10 或 group by 之类,尽可能避免在 where 语句中使用 != 或者 <> 操作符,因为,查询引用会放弃索引进行全表扫描。实践表明高负载环境,数据库使用场景越简单越好,最好的结果就是所有查询语句除了 where 没其他
  12. 禁止在非索引的字段进行查询
  13. 禁止使用连表查询
  14. 禁止使用非主键统计语句
  15. 查询、修改、删除尽可能的使用主键
  16. 查询 SELECT * 不写字段,一次查完
  17. order by 必须建立在索引之上
  18. 禁止使用日期类型的字段DATE\DATETIME之类,所有日期类型一律使用int,储存为时间戳或数字串如20200113;
  19. 字段储存尽量设计为使用tinyint或int,能用tinyint就不用int,能用int就不用bigint。能用tinyint代替char和varchar就代替,比如很多人喜欢直接用“男”“女”储存性别,可以直接用tinyint(1),储存值0无性别 1男 2女 这种形式;
  20. 创建字段默认值禁止使用“无”或 “NULL”,数字型字段一律默认值0,字符类型一律空。
  21. 很少使用的大字段拆分到单独表,如CMS程序的内容详情页,使用单独的data表,因为,绝大部分的操作都以标题(title)为主;
  22. 封装 SQL 语句不能任性写,必须依照现有的索引左优先原则,创建索引前请设计好,不能 where `uid`='1' and `tid`=`1` 然后高兴就又写成 where `tid`=`1` and `uid`='1'
  23. 所有内容主题类的请求数据,一律查询主键后扔进统一拉取数据的函数,统一获取数据,避免多次查询同一个表,cms 所有的操作,只对同一个表查询一次,不管有什么花样的数据调用,任何页面的数据,每个表只能查询一次,这是原则,不能改变。很多CMS同一个页面查询同一个表 N 次,还是大数据承载量和高并发。列表类统一拉取,避免多次查询thread表 thread_unified_pull($arr) 具体二开请自行查看该函数如何使用;详情页其他主题调用,集合tid统一拉取数据 thread_other_pull($thread) 具体二开请自行查看该函数如何使用;
  24. 单一查询适当使用 cache ,用户类数据一律永久缓存,标题类一律缓存生命期7200秒,内容详情类一律缓存生命期3600秒或1800秒,更新数据记得清理缓存cache_delete 或者直接 cache_update 更新缓存数据(具体使用请查看相关函数),避免再次到SQL获取,对于一直动态变化的数据没必要使用缓存,如列表。
  25. 字段类型使用约束:尽可能的使用 tinyint 或 int。

 

建站!你有充足的理由选择我们

世界上超过30%的网站是由WordPress搭建,而我们是国内最靠谱的WordPress主题开发商
QQ咨询在线咨询问答互助微信号geekercode微信公众号云服务器