数据库调优教程(十一) 设计一张漂亮的表

原创 2015年04月11日 09:11:28

四、           设计一张漂亮的表


上一章讲了如何通过索引来提速我们的查询语句,这一章让我们回到数据库开发的初始阶段,建表。谈谈怎样设计一张漂亮的表。


1.      满足三范式

1NF: 即表的列的具有原子性,不可再分解,即列的信息,不能分解, 只要数据库是关系型数据库(mysql/oracle/db2/informix/sysbase/sqlserver),就自动的满足1NF

 

数据库的分类

关系型数据库:  mysql/oracle/db2/informix/sysbase/sql server

非关系型数据库:  面向对象或者集合

面向文档数据库:   MongoDB

 

2NF: 表中的记录是唯一的, 就满足2NF, 通常我们设计一个主键来实现。一般情况下,表中都必须设置主键,并且一般不含业务逻辑,可以设置为自增长。

 

3NF: 即表中不要有冗余数据, 就是说,表的信息,如果能够被推导出来,就不应该单独的设计一个字段来存放.

有时候为了减少查询次数,可以容忍冗余。

 

2.      字段数目不要过多

一张表的字段过于庞大,会导致查询时的扫描范围加大,即使你并没有查询相应字段。

所以,如果一张表某个字段,信息量大,但是我们很少查询,则可以考虑把这些字段,单独的放入到一张表中,这种方式称为垂直分割

 

3.      选择合适的字段类型

在创建表的时候要选取最适用的字段属性。

一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小

举个例子

11位的手机号

有两种类型可以存储

Bigint、char(11)。Int类型最大2147483647不可存

考虑到Bigint占20字节,而char(11)占11*2=22(gbk)或11*3=33(utf-8),所以使用bigInt是最好的。

 

如果在创建表之后发现表的字段设置不够合理想修改时怎么修改呢?


4.      修改表结构

如果发现表的字段设置不够合理想修改时怎么修改呢,有两种方法。

传统方法

先使用show createtable 查看原先怎样创建字段的

然后就可以根据需要修改了

alter table patent_data modify mingcheng varchar(500) DEFAULT NULL COMMENT '名称';


快速方法(简单粗暴而高效)

创建一个结构是你所需要的空表,关闭mysql,在文件夹中直接复制新生成的表的frm文件替换掉原来表的的frm文件

注:

Frm文件位于mysql安装目录下的   /data/数据库名   目录下



本章结束,下一章将谈谈sql语句的优化方法。


版权声明:本文为博主原创文章,未经博主允许不得转载。

数据库调优教程(十一) 设计一张漂亮的表

设计一张漂亮的表
  • Goluck98
  • Goluck98
  • 2015年04月12日 10:25
  • 635

数据库调优教程(十三) MySQL数据库其他优化方法

最后一章,谈谈前面没有涉及的一些优化方法。
  • hzy38324
  • hzy38324
  • 2015年04月11日 12:19
  • 1920

Mysql数据库调优和性能优化的21条最佳实践

作者:andyao 原文link: http://andyao.iteye.com/admin/show/144033 转载请留名 1. 简介 在Web应用程序体系架构中,数据持久层(通常是一个关...
  • ning109314
  • ning109314
  • 2013年08月16日 10:49
  • 39048

Activiti入门教程二(熟悉数据库设计)

上篇博客中提到,学习Activiti主要是学习自带的23张数据表,那么这篇博客就来分析一下这23张表,下面是分类。 下面来一点一点的来分析一下上图结构。 与部署对象和流程定义相关的表 ...
  • ZHOUCHAOQIANG
  • ZHOUCHAOQIANG
  • 2015年09月19日 13:19
  • 3910

数据库服务器的性能调优

一、I/O调优    在进行 I/O调优时必须做出许多决策。是否使用原始设备或文件系统?是否使用直接 I/O?应该为数据库选取多大的块尺寸? 如果正在严格地执行在线事务处理(其特征为小型的随机读/写操...
  • ctthunagchneg
  • ctthunagchneg
  • 2016年10月27日 14:23
  • 1133

使用PowerDesigner进行数据库设计

这里用PowerDesigner做一个初步的设计,后面可能会有修改。 1、启动PowerDesigner新建物理数据模型        2、工具栏   3、新...
  • ycl295644
  • ycl295644
  • 2015年11月24日 13:31
  • 8139

主从-分表数据库优化思想

 作为了解需要知道主从服务器的模型的: 今天想了这个问题:我做的模块不需要查询只是insert和update.而search操作由其他模块做。那么我想提高写入的性能又不影响查询的性能,怎么办。...
  • q576709166
  • q576709166
  • 2014年05月27日 10:29
  • 579

oracle数据库优化

oracle数据库优化 转自:http://www.cnblogs.com/lodestar/archive/2007/04/19/719933.html   这是以前在程序员...
  • really3353
  • really3353
  • 2013年05月16日 09:20
  • 13010

数据库如何创建,维护,优化注意事项

ps:大的列通过MD5编码后对MD5查询
  • johnstrive
  • johnstrive
  • 2014年09月22日 11:30
  • 3186

Java调优经验谈

原文:http://www.rowkey.me/blog/2016/11/02/java-profile/ 目录 调优准备性能分析性能调优其他优化建议JVM参数进阶 对于调优这个事情...
  • zhengchao1991
  • zhengchao1991
  • 2016年11月16日 17:09
  • 1208
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据库调优教程(十一) 设计一张漂亮的表
举报原因:
原因补充:

(最多只允许输入30个字)