一,尽量不字啊数据库做运算

1,尽量不再数据库做运算,

2,将复杂运算移动到cpu

3,尽可能简单应用mysql

二,控制表数据量

1,纯 int不超过1000w

2,含char不超过500w

3,建议单裤不超过300-400个表

三,保持表的苗条身材

1,表的字段数少而精

2,单表字段数上限在20~50个

四,平衡范式和冗余

1,效率优先,提升性能

2,没有绝对的对与错

3,适当牺牲范式,加入冗余

五,拒绝3B

1,大SQL

2,大事务

3,大批量

六,字段设置龟定

1,将字符转化为数字(更高效,查询快,占空间更小)

2,优先使用enum或set(值已知或有限,如 性别)

3,避免使用NULL字段(很难优化查询,加索引需要额外空间,含NULL复合索引无效)

4,尽量不使用text/blob(必须使用时拆分到单独的表)

5,不再数据库存图片

七,索引浅龟定

1,谨慎添加索引

2,最好不超过字段数20%

3,字段前加前缀

4,不在索引列做运算

八,主键设置

1,二级索引存储主键值2,主键不应更新或者修改3,按自增顺序插入值4,忌用字符串做主键5,若不指定主键,innoDB会使用唯一且非空值索引代替

九,事务,触发器,or,limit浅龟定1,事务/连接使用原则:即开即用,用完即关

2,与事务无关的操作放到事务外面,减少锁资源的占用

3,不破坏一致性的前提下,使用多个短事务代替长事务4,尽可能少用存储过程

5,尽可能少使用触发器6,减少使用mysql函数对结果进行处理(由客户端程序负责)

7,尽量不适用select *,只取需要的数据列

8,改or为in()【or效率 O(n),in效率O(log n)】控制in的数量,建议小于2009,改or为union

10,减少使用count(*)

11,limit(偏移量越大则越慢)

select id,col1,col2 from test limit 1999999,10;

替换为:

select id,col1,col2 from test where id>1999999 limit 10;

杂项浅龟定:

1,适当分解连接保证高效并发

2,永远不再程序端显式加锁【外部锁对数据库不可控,高并发是时灾难】

3,统一字符集为utf-8

4,统一命名规范【库表名统一小写,索引名称默认为"idx_字段名",库名用缩写】

最新文章

  1. BIAWGN信道
  2. HTML 学习笔记 JavaScript(事件)
  3. js 闭包原理理解
  4. (转)使用Custom Draw实现ListCtrl的重绘
  5. [tools]神器notepad++
  6. AxureRP7.0教学大纲Tutorial directory
  7. alpha发布用户数
  8. iOS开发 iOS10推送必看
  9. Hive简介
  10. 简单总结焦点事件、Event事件对象、冒泡事件
  11. ubuntu下查看-卸载软件(卸载.net core sdk的方法)
  12. 【深度学习篇】---CNN和RNN结合与对比,实例讲解
  13. 01 JVM 从入门到实战 | 什么是 JVM
  14. MySqlBulkLoader设置Columns时要注意的地方
  15. 【转】这五种方法前四种方法只支持IE浏览器,最后一个方法支持当前主流的浏览器(火狐,IE,Chrome,Opera,Safari)
  16. Spring Boot 揭秘与实战 附录 - Spring Boot 公共配置
  17. 谈谈HashMap线程不安全的体现
  18. Suggestion: add 'tools:replace="android:value"' to <meta-data> element at AndroidManifest.xml:25:5-27:41 to override.
  19. 《JavaScript高级程序设计》3.7 函数
  20. 第一次c++团队合作项目第二篇随笔

热门文章

  1. Spring学习(20)--- Schema-based AOP(基于配置的AOP实现) -- 配置切入点pointcut
  2. Struts+jdbc+分页 实例
  3. 在linux系统下安装redis
  4. jq瀑布流代码
  5. java源码学习(四)ArrayList
  6. Redis中的数据对象
  7. mysql数据与Hadoop之间导入导出之Sqoop实例
  8. request.getParameter()及解决数据库中文乱码问题——实习第七天
  9. 将逗号分隔 的字符串转化成List
  10. js将时间戳转成格式化的时间