1、 存储引擎

创建表的时候,一般程序中我们都需要支持事务,所以我们一般使用的是InnoDB 存储引擎

2、 命名规则

a、所有的表应该有统一的项目前缀,表示为同一个项目的表格

b、尽量保持至少三级,例如 act_hi_identitylink   act第一级别表示是谁的表,hi表示那个模块的表 identitylink 具体功能的表

c、字段名称与java代码相一致,java实体类保持驼峰原则,表之间用"_"来链接

3、数据库字段类型定义

a、通常使用varchar 而不使用char

b、id 一般使用bigint

c、我认为时间类型的最好也是存储成String类型的 varchar -----这样代码中就可以自由转换,实现自己想要的实现方式。

d、金额类的还是要用 decimal(16,2)

4、 适当包含的冗余字段,可以减少我们查询的join

5、索引

a、普通索引可以增加访问数据库的速度

b、唯一索引可以减少数据库的出现重复的脏数据

c、创建联合索引的数据要注意索引的顺序,sql语句中的匹配条件也要跟索引的顺序保持一致,切注意:索引的顺势不正确也可能导致严重的后果。

联合索引中的字段应尽量满足过滤数据从多到少的顺序,也就是差异最大的字段应该放在第一字段

联合索引中的字段应尽量与SQL语句的顺序一致,使SQL语句尽量以整个索引作为条件,尽量避免以索引的一部分(特别是首个索引与索引的首个字段不一致)作为查询条件

eg:对一张表上的a、b、c 上创建联合索引(a、b、c)

where a=1;  where a >= 12 and a<15; where a =1 and b<5 ;where a =1 and b=7 and c>=40 为条件时用到此联合索引

where b=3;where c=188 ;where b>12 and c =2   首个索引的和查询的首个字段不一致,索引失效

order by 和 group  也是无法使用索引的

6、合理构造Query语句

a、insert 批量插入1000条数据时,效率最高,多于1000条时候,可以考虑分开插入

b、业务逻辑查询性能 and、or、in   所以应该尽量避免在大集合使用in

c、join查询要通过小集合驱动大记录集,这个原则来减少嵌套的次数

d、select * 尽量不要出现

7、合理的使用cache来优化数据,减少io流的访问消耗内存。

8、为什么用自增列作为主键

a、如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引、如果没有显式定义主键,

则InnoDB会选择第一个不包含有NULL值的唯一索引作为主键索引、

如果也没有这样的唯一索引,则InnoDB会选择内置6字节长的ROWID作为隐含的聚集索引(ROWID随着行记录的写入而主键递增,这个ROWID不像ORACLE的ROWID那样可引用,是隐含的)。

b、数据记录本身被存于主索引(一颗B+Tree)的叶子节点上。这就要求同一个叶子节点内(大小为一个内存页或磁盘页)的各条数据记录按主键顺序存放,

因此每当有一条新的记录插入时,MySQL会根据其主键将其插入适当的节点和位置,如果页面达到装载因子(InnoDB默认为15/16),则开辟一个新的页(节点)

c、如果表使用自增主键,那么每次插入新的记录,记录就会顺序添加到当前索引节点的后续位置,当一页写满,就会自动开辟一个新的页

d、 如果使用非自增主键(如果身份证号或学号等),由于每次插入主键的值近似于随机,因此每次新纪录都要被插到现有索引页得中间某个位置,

此时MySQL不得不为了将新记录插到合适位置而移动数据,甚至目标页面可能已经被回写到磁盘上而从缓存中清掉,此时又要从磁盘上读回来,

这增加了很多开销,同时频繁的移动、分页操作造成了大量的碎片,得到了不够紧凑的索引结构,后续不得不通过OPTIMIZE TABLE来重建表并优化填充页面。

9、为什么使用数据索引能提高效率

a、数据索引的存储是有序的

b、在有序的情况下,通过索引查询一个数据是无需遍历索引记录的

c、 极端情况下,数据索引的查询效率为二分法查询效率,趋近于 log2(N)

mysql设计学习_Mysql数据库设计学习相关推荐

  1. mysql数据库设计原则_mysql数据库设计总结

    作者:腾讯云技术社区 链接:https://www.zhihu.com/question/19719997/answer/154809252 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权, ...

  2. mysql 苏勇_MySQL数据库基础学习笔记(整理自苏勇老师的MySQL基础课程视频)

    一.mysql安装及基本配置 1.安装 Mysql官网:www.mysql.com 开源版本(MySQL Community Server) --安装系统自带版本(如果需要更高版本可到官网下载) # ...

  3. mysql复数记录_mysql 数据库设计查询规范

    (一)建表规约 1.[强制]表达是与否概念的字段,必须使用is_xxx的方式命名,数据类型是unsignedtinyint(1表示是,0表示否) .说明:任何字段如果为非负数,必须是unsigned. ...

  4. MySQL数据库搜题_智慧树知到_MySQL数据库设计与应用_搜题公众号

    智慧树知到_MySQL数据库设计与应用_搜题公众号 更多相关问题 阅读理解. This is the twin's(双胞胎的) room. It's a nice room. The two beds ...

  5. mysql数据库设计与应用答案智慧树_知到智慧树_MySQL数据库设计与应用_答案完整...

    知到智慧树_MySQL数据库设计与应用_答案完整 更多相关问题 [B11]A.carry onB.linger onC.set inD.log in 数据库的三级模式结构中,模式也称为A.逻辑模式B. ...

  6. his使用mysql_知到智慧树_MySQL数据库设计与应用_答案全部

    知到智慧树_MySQL数据库设计与应用_答案全部 更多相关问题 He was crossing over to _____ side of the road when I saw him. A.oth ...

  7. mysql数据库设计的原则_MySQL数据库设计原则

    转自 http://www.supidea.com/post/mysql_design_database.aspx MySQL数据库设计原则 MySQL对于成为一个非常快速的数据库服务器有着当之无愧的 ...

  8. mysql数据库比对视频教程_MySQL数据库全学习实战视频教程(27讲 )

    一)mySQL数据库简介:MySQL属于关系型数据库,是当前最流行的关系型数据库管理系统之一,在WEB项目使用方面,MySQL是最好的 RDBMS应用软件. 二)本mySQL数据库视频教程目录如下:  ...

  9. mysql数据库应用题库_MySQL数据库设计与应用章节考试题库

    MySQL数据库设计与应用章节考试题库 更多相关问题 [单选] 8岁女性患者,因外伤后致右胫骨骨折,下列描述正确的是() [判断题] 开放性骨折处理原则是及时处理创口,尽可能防止感染,力争将开放性骨折 ...

最新文章

  1. 【Android 文件管理】分区存储 ( MediaStore 文件操作 )
  2. 清华大学计算机毕业论文,清华大学毕业论文撰写要求
  3. 你能体会那种写 Python 时不用 import 的幸福吗?
  4. SQLServe错误整理
  5. Qt 入门 ---- 如何在程序窗口显示图片?
  6. 2008秋季-计算机软件基础-未交实验报告名单
  7. 汇编语言---冒泡法排序
  8. opengl将bmp读成像素_在 opengl 环境下将 texture 保存为 bmp 图片
  9. bootstrap 学习 ---css样式学习
  10. But how to do it? How to avoid direct competition with giants?
  11. 2019,国产手机生死存亡的一年
  12. cocos2dx骨骼动画Armature源码分析(一)
  13. 网页跳转出现内部服务器错误,页面跳转后提示HTTP异常500(InternalServerError):服务器尝试执行请求时遇到了意外情况...
  14. 第三章 文件IO复习
  15. 已支持macOS Big Sur 的apple App更新列表
  16. IDEA 删除本地文件时,SVN服务器上文件无法删除解决办法
  17. 效能评估软件解决方案
  18. RoboWare Studio 安装教程与可能问题解决
  19. 多个485串联_让RS-485接口远离EMI风险!这有三个实用方案
  20. 一个简单的三层架构之仓库管理系统的入库出库

热门文章

  1. RenderMan:渲染技术
  2. 2019.03.17 14:58
  3. mysql中交集,并集,差集,左连接,右连接
  4. 8080端口被占用bug解决办法
  5. RecycleView的Item Decoration间隔样式
  6. 原python最简单的图形编程_Python(简单图形和文件处理)编程
  7. python二次开发odoo_odoo二次开发 - 战鹏的Blog - OSCHINA - 中文开源技术交流社区
  8. html文本框怎么加注释,html 注释(html如何添加注释符号)
  9. 录入班级学生姓名科目成绩_如何利用钉钉发布考试成绩
  10. mysql 5.5 udf_MYSQL5漏洞之udf提权