mysql_数据库设计类型选择及优化

数据库设计原则:

a,更小的通常更好。

应该尽量使用可以正确存储数据的最小数据类型。如只要存储0-200,tinyint unsigned更好

b,简单就好

简单的数据类型的操作需要更少的cpu周期。同时后期优化也更为容易。

c,尽量避免使用null

mysql在建立索引,优化过程对null需要做特殊处理,耗费额外资源。非特殊情况,避免使用null。

数据类型常识

一,整数类型

根据存储空间:

TINYINT SMALLINT MEDIUMINT INT BIGINT
存储空间位数n 8 16 24 32 64?
存储范围 -128~127

根据属性

unsigned:-2(N-1)-2(N-1)-1  --没办法输入右上标

signed:0~2(N-1)

指定宽度

INT(11),这对大多数应用没有实际意义,他不会限制值的合法范围,只是规定了一些交互工具用来显示字符的个数,对存储和计算来说,INT(11)和INT(20)是相同的

二:实数类型

float,double,decimal

float和double使用标准浮点近似运算.

decimal使用精确运算.需要额外开销,

decimal(18,9),存储18位数,小数点左右各9位。

三,字符串类型

长度 额外记录长度 长度不足 长度超出 尾部空格
varchar(n) 变长 需要 以实际长度存储 截断 保留
char(n) 定长 不需要 尾部用空格填充 截断 删除

varchar:字符串最大长度比平均长度大很多,列更新很少,碎片不是问题

char:char会根据需要对存储数据尾部空格删除,如果长度不足,采用空格对尾部填充,

适合存储很短,或者所有值都接近同一个长度

四,日期和时间类型

datetime,timestamp

datetime:它把日期和时间封装成YYYYMMDDHHMMSS的整数中,可排序,无奇异,可表示范围到9999年

timestamp,保存从1970-01-01午夜以来的秒数,具备自动刷新功能,和时区绑定,效率更高,可表示范围到2038年。

五,大文本类型

blog,text,这种数据我一直认为应该以文本形式存储在系统文件中比较好

六,ENUM

有限类型字符串,用枚举的方式代替,效率更高。

数据类型不外乎是mysql用来存储数据的格式规范,mysql由c++开发,其实自己用c++定义一套数据库亦可,只是mysql更成熟稳定罢了。

时间: 2024-08-24 17:50:19

mysql_数据库设计类型选择及优化的相关文章

Oracle数据库设计类型选择错误的隐患

数据类型不准确的一个隐患,下面来构造一张表存日期字段,一个存varchar2,一个存date,做一个测试.之前也写过两篇blog: 1.字段类型设计与实际业务不符引发的问题1 2.字段类型设计与实际业务不符引发的问题2 SQL> drop table test purge; SQL> create table test as select to_char(to_date('2014-01-01','yyyy-MM-dd')+rownum,'yyyymmdd') s_date, to_date(

数据库设计【工具:EA】

EA工具很是强大,不仅仅能创建UML图,还可以进行数据库设计,并导出数据库脚本. 一.打开EA创建一个工程,右键model弹出快捷菜单,选择 新建视图 二.弹出 新建视图 对话框,输入名称, 选择显示的图标为普通,点击确定按钮. 三.产生 数据库设计 视图,右键数据库设计,选择 :添加——新增图表. 四.选择Extended——Data Modeling,点击确定按钮 五.选择Table Detail下面的columns/Attributes,添加数据库的属性 六.添加表信息:名称.别名等 七.

数据库设计中主键字段类型的选择

很久都没有写过博客了,从最后一次发表的文章到现在已经是两个多月的时间了,一直都想写点什么,可一直没有时间(其实都是借口),随笔内容无疑就是工作学习中的总结,经验的分享,也是自己成长的一面镜子,好了,言规正传,这次谈谈在数据库设计中主键字段类型的选择. 做web 开发时,经常要与数据库交互,数据库主键的选择也犹为重要,怎么么选择数据库主键字段的类型,主要从以下几个方面考虑: 1. 首先要符合业务需求,这是设计中重要的出发点 2. 数据库的迁移问题,考虑在后期是否要经常迁移,数据库高度唯一性 3.程

优化MySchool数据库设计之【巅峰对决】

优化MySchool数据库设计 之独孤九剑 船舶停靠在港湾是很安全的,但这不是造船的目的 By:北大青鸟五道口原玉明老师 1.学习方法: 01.找一本好书 初始阶段不适合,可以放到第二个阶段,看到知识点时,要进行验证 02.查看帮助文档和搜索引擎的使用 借助网络上的Blog文章 03.不要急功近利 不要抱着速成的想法,否则必然走弯路学习编程不是一蹴而就的事情付出的成本高,才能有一个高薪的收入 04.不要浮躁 不要什么都学,只学有用的 浮躁的程度和技术水平成反比的走自己的路,让别人去浮躁去吧! 每

性能优化系列六:数据库设计

一.为优化而设计 1. 数据库设计 数据库设计,一个软件项目成功的基石.数据库设计也是门学问.在项目早期由开发者进行数据库设计(后期调优需要DBA).一个精通OOP和ORM的开发者,设计的数据库往往更为合理,更能适应需求的变化.因为数据库的规范化,与OO的部分思想雷同(如内聚).而DBA,设计的数据库的优势是能将DBMS的能力发挥到极致,能够使用SQL和DBMS实现很多程序实现的逻辑,与开发者相比,DBA优化过的数据库更为高效和稳定. 2. 数据库设计与程序设计的差异 有如下的一个系统: 面向对

数据库设计优化

物理设计: 物理设计要做什么? 选择合适的数据库管理系统. 考虑因素:成本,业务场景,开发语言,功能,操作系统等. 数据库类型 成本 开发语言 支持系统 业务场景 Oracle 商业型 php,java,python等 windows/liunx系统 企业级 SQLServer 商业型 .NET,C#等 只支持windows系统 企业级 MySQL 开源型 php,java,python等 windows/liunx系统 中小型 PgSQL 开源型 php,java,python等 window

公交车路线查询系统后台数据库设计--换乘算法改进与优化

在<查询算法>一文中已经实现了换乘算法,但是,使用存储过程InquiryT2查询从“东圃镇”到“车陂路口”的乘车路线时,发现居然用了5分钟才查找出结果,这样的效率显然不适合实际应用.因此,有必要对原有的换乘算法进行优化和改进.在本文中,将给出一种改进的换乘算法,相比原有的算法,改进后的算法功能更强,效率更优. 1. “压缩”RouteT0 假设RouteT0有以下几行 如下图所示,当查询S1到S4的二次换乘路线时,将会产生3×2×4=24个结果 从图中可以看出,第1段路线中的3条线路的起点和站

数据库设计---关于建表的时候选择横标和竖表(纵表)的一点思考

本文出处:http://www.cnblogs.com/wy123/p/6677073.html 在做数据统计类数据库设计的时候,在考虑数据存储的时候,经常会遇到逻辑上同一个BusinessID对应多个数据点的情况,比如工资表中的员工ID以及各项工资信息,财务表中的各个报表Id和多个数据点之间的信息面对这种情况,如何来设计表结构,是横表,还是竖表,各有那些优缺点,本文将做一个粗浅的分析. 横标和竖表的表现形式 日常生活中也有很多类似的例子,先用一个Excel画一个例子,比如工资表这么做就是“横表

优化MySchool数据库设计总结

数据库的设计 一:什么是数据库设计? 数据库设计就是将数据库中的数据实体以及这些数据实体之间的关系,进行规范和结构化的过程. 二:为什么要实施数据库设计? 1:良好的数据库设计可以有效的解决数据冗余的问题 2:效率高 3:便于进一步扩展 4:使得应用程序开发变得容易 三:设计数据库的步骤 第一步    需求分析:  分析客户的业务和数据处理需求(收集信息,标识实体,标识每个实体需要存储的详细信息,标识实体间的关系) 第二步    概要设计:  绘制E-R图,用于与客户或团队成员的交流 第三步