zoukankan      html  css  js  c++  java
  • 数据库调优教程(十一) 设计一张漂亮的表

    四、           设计一张漂亮的表


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


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


  • 相关阅读:
    Android开发之Toast的快去替换
    Android开发之Fragment的替换显示反复创建问题
    Android开发之多渠道打包
    Android开发之让其他软件调用自己播放器
    Android开发之的到屏幕的宽和高
    Android开发之视频播放调用setVideoPath()方法
    [luogu4931]情侣?给我烧了!
    CF449D Jzzhu and Numbers
    [PKUWC2018]猎人杀
    [BZOJ3028]食物
  • 原文地址:https://www.cnblogs.com/javdroider/p/5184308.html
Copyright © 2011-2022 走看看