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

原创 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语句的优化方法。


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

相关文章推荐

数据库调优教程(六) 索引的相关操作

上一讲我们介绍了索引的作用和种类,这一讲我们谈谈索引的相关操作。

数据库调优教程(八) 什么情况下不要使用索引

既然索引是有代价的,那么就不要在不应该使用索引的情况下去使用它。

数据库调优教程(十) 【精华章节】解决like ’%str’ 时索引不被使用的4种方法

给大家分享解决like’%%’不使用模糊查询的4种方法!!

MySQL EXPLAIN 命令详解学习

MySQL EXPLAIN 命令详解 MySQL的EXPLAIN命令用于SQL语句的查询执行计划(QEP)。这条命令的输出结果能够让我们了解MySQL 优化器是如何执行 SQL 语句的。这条命...

数据库调优教程(七)索引的代价

前面几讲介绍了索引在提高性能方面的威力以及如何使用索引,但是索引也是有开销的

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

最后一章,谈谈前面没有涉及的一些优化方法。

数据库调优教程(九) 添加了索引但不被使用的几种常见可能

上一讲聊了什么时候不要使用索引,但有时候使用了也不见得会被使用。

数据库调优教程(十二) 优化sql语句

上一章讲了如何设计一张好的表,一张好的表自然需要好的sql语句去操作它。本章就来聊聊如何优化sql语句。

数据库调优教程(二)慢查询数据准备

手动创建一张大数量级的表

数据库调优教程(一)前言&慢查询定义

最近帮公司优化数据库,凭着之前所学,一步一步地将学习知识用于实践,总算是将速度蹭上去了,一个原本要执行1分多钟的查询现在只需要3秒。 现把自己所学所思及所用加以总结,一方面为自己巩固知识,另一方面也给...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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