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

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_字段名",库名用缩写】

mysql浅龟定的更多相关文章

  1. Python 基于python+mysql浅谈redis缓存设计与数据库关联数据处理

    基于python+mysql浅谈redis缓存设计与数据库关联数据处理 by:授客  QQ:1033553122 测试环境 redis-3.0.7 CentOS 6.5-x86_64 python 3 ...

  2. MySQL浅谈 LEFT JOIN

    On条件(在“A left join b on conditional_expr”)决定如何从table B 中检索数据行(Matching-State); 如果B中没有行匹配On 条件,额外的B的所 ...

  3. sql server 与 mysql在自定以数据类型的区别

    sql server   中可以使用 create  TYPE postal_code FORM varchar(6) not null; 用于限定邮编的数据位数,他基于varchar数据类型 注意: ...

  4. mysql浅谈--事务ACID特性

    mysql MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管 ...

  5. mysql简单建表

    MySQL 字段约束 null,not null,default,auto_increment [来源于] 没有规矩,不成方圆,任何事物都是如此.在MySQL中,每个字段定义都包含附加约束或者修饰符, ...

  6. 关于MySQL的安装使用心得

    MySQL浅浅地学习了几天,当然还是转到正轨Java上来了,昨天打了一串代码,测试注解来着,结果MySQL挂了~~~ 如何干净卸载MySQL帖子有很多,不再赘述,注册表是个好东西~~ 卸载了Mysql ...

  7. MYSQL索引结构原理、性能分析与优化

    [转]MYSQL索引结构原理.性能分析与优化 第一部分:基础知识 索引 官方介绍索引是帮助MySQL高效获取数据的数据结构.笔者理解索引相当于一本书的目录,通过目录就知道要的资料在哪里, 不用一页一页 ...

  8. MySql UDF 调用外部程序和系统命令

    1.mysql利用mysqludf的一个mysql插件可以实现调用外部程序和系统命令 下载lib_mysqludf_sys程序:https://github.com/mysqludf/lib_mysq ...

  9. centos7下 安装mysql

    wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-rele ...

随机推荐

  1. 我的学习之路_第五章_Data,正则

    Date 类 (时间类) 所属包:java.util.Date 构造方法: public Date() 返回的是当前时间 也就是1970-1-1到电脑目前的时间值,用毫秒来表示 public Date ...

  2. Codility---MaxProfit

    Task description A zero-indexed array A consisting of N integers is given. It contains daily prices ...

  3. 第一次使用idea从SVN什么checkout项目,一直都是用的eclipse

    IntelliJ IDEA 14 拉取SVN maven 多模块项目 部署tomcat 详细图解!   二话不说 进入主题 我们创建空项目实际上是项目空间 进入主界面 想用svn必须先启用它 选择Su ...

  4. linux tesseract 安装及部署tess4j项目的常见问题

    linux上部署tess4j项目 在windows上项目是可以正常运行的,部署到Linux上后,运行报异常,异常内容为:Unable to load library 'tesseract': Nati ...

  5. golang 浮点数 取精度的效率对比

    需求 浮点数取2位精度输出 实现 代码 package main import ( "time" "log" "strconv" " ...

  6. 网络接口配置--Bonding

    Bonding 就是讲到快网卡绑定到同一IP地址对外服务,可以实现高可用或者负载均衡.当然,直接给两块网卡设置同一IP地址是不可能的.通过bonding,虚拟一块网卡对外提供连接,物理网卡被修改为同一 ...

  7. 微信小程序开发过程中一些经验总结

    1.微信开发者工具报错,微信小程序最低需支持tls1.2版本的问题 原因是服务器不支持ssl的高版本,解决方法: 在/etc/nginx/conf.d文件下,把"ssl_protocols  ...

  8. 百度地图 js api 实现 line 居中显示

    项目中有个需求需要在百度地图的中心显示画的线,以前用过mapPanto这个方法,传入坐标就可以将地图平移到这个坐标,不过不知道如何获取线的中心点,看了别人的代码,有以下两个函数可以实现这个功能 get ...

  9. javascript实现禁止右键和F12查看源代码

    <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...

  10. [leetcode-611-Valid Triangle Number]

    Given an array consists of non-negative integers, your task is to count the number of triplets chose ...