mysql数据库建表分类字段--尽量少用字符串--原因探索
虽然一直都知道,类型 之类的字段 直接用字符窜会很方便,不过最好还是不要用字符串;但是也不是特别清楚为什么不要用,时间久了 就忍不住用一下字符窜试试,这一试 还挺好用的,吓得我 感觉探究了一下 为什么最好不要用字符窜。
一是从空间上考虑,对于类型 分类的字段来说,用int代表不同的类型,比varchar 更节省空间。 数据量少的时候 不明显,但是 数据量特别大,或者数据常加载到内存里 差别就比较明显了。
二是 从 安全性考虑,varchar 容错性高,会导致 程序的bug 不能那么及时的体现出来 进而留下隐患,如果用 int 代表类型,则安全性会有不小的提升。
三,为何不用 枚举: 破坏了范式要求; 不易拓展 更改代价昂贵,会重构整个数据表; 获取全部可能值麻烦;其他表中不可直接复用,移植性不佳; 优化提升有限!
四,bool 最好也要少用,其原因 一是拓展不好,二是 在mysql里 创建bool 会被转为tinyint(1),写入大的数值会被截断,有警告 但是也可以执行。所以,布尔类型BOOL/BOOLEAN的功能等同于微整型TINYTINT; 不如直接用 int 更有助于理解。
如果有不严谨的地方,欢迎指正。
mysql数据库建表分类字段--尽量少用字符串--原因探索的更多相关文章
- mysql数据库user表host字段的%问题
搜索: mysql数据库user表host字段的%问题 连接:http://blog.csdn.net/xiaomengh/article/details/48706149 在mysql数据库中,使用 ...
- mysql数据库、表、字段、记录:增、删、改、查
/* 结构:数据库.表.字段.记录 操作:增删改查 */ -- 1.数据库:增删改查 create datebase if not exists jkxy; drop database if exis ...
- mysql数据库建表的基本规范
1.创建表的时候必须指定主键,并且主键建立后最好不要再有数据修改的需求 mysql从5.5版本开始默认使用innodb引擎,innodb表是聚簇索引表,也就是说数据通过主键聚集( 主键下存储该行的数据 ...
- MYSQL数据库建表注意事项
1.库名.表名.字段名必须使用小写字母,“_”分割. 原因: MySQL在Linux下数据库名.表名.列名.别名大小写规则是这样的: 1.数据库名与表名是严格区分大小写的: 2.表的别名是严格区分大小 ...
- mysql数据库建表授权操作
1.create schema [数据库名称] default character set utf8 collate utf8_general_ci;--创建数据库 采用create schema和c ...
- mysql数据库建表
主键的问题: 简单的id递加.不过在实习的时候,因为id递增的问题,导致一个项目最后好像产生了严重的问题.所以递增适合小型项目,对我们的项目来说90%足够可以用的. 一些限制: 一般就非空就行,唯一的 ...
- MySQL数据库建表命名的坑
今天建了一张表,表名为--inOut: 然后再使用中发现怎么都是SQL错误: 然后在Navacat上发现 这是一个关键词! 如果非要继续使用,只能这样: 类似的坑还有user等.
- MySql数据库设计表添加字段
当要添加的字段属于整型,需要设置默认值 或者: alter table fp_user_base add hasPwd tinyint(4) not null default 0;
- mysql数据库单表只有一个主键自增id字段,ibatis实现id自增
mysql数据库单表只有一个主键自增id字段,ibatis实现id自增 <insert id="autoid"> insert into user_id ...
随机推荐
- Android零基础入门第28节:轻松掌握RelativeLayout相对布局
原文:Android零基础入门第28节:轻松掌握RelativeLayout相对布局 在前面三期中我们对LinearLayout进行了详细的解析,LinearLayout也是我们用的比较多的一个布局. ...
- MySql5.7.11 for Windows 安装精简版(一)
原文:MySql5.7.11 for Windows 安装精简版(一) 从官网下载压缩包,我下载的是64位的.解压. 精简: -Bin下只保留 mysqladmin.exe mysqld.exe my ...
- Vm安装
说明:都是默认安装,并不需要繁琐设置,所以没有文字说明
- C# Encoding.GetEncoding 编码列表
原文:C# Encoding.GetEncoding 编码列表 代码页 名称 显示名称 37 IBM037 IBM EBCDIC(美国 - 加拿大) 437 IBM437 OEM 美国 500 IBM ...
- 给变量赋值,程序会跳到 HardFault_Handler的问题
原因:变量属于指针,该指针没有初始化
- 利用AngularJS实现一个单页应用
看了下angular 的route,用它做个非常简单的单页面应用,记录一下. 顺便说下,好处是,页面改变时不需要刷新,而每个页面都展现不同的数据.尤其在使用模板页的时候,非常方便. 快速使用Roman ...
- Markdown 语法简体中文版
Markdown 语法简体中文版(fork 于繁体中文版 http://markdown.tw/ ) http://wowubuntu.com/markdownhttps://github.com/r ...
- 记住以下10条,Linux磁盘与文件系统管理无忧矣
1.查看当前Linux系统所支持的文件系统:ls -l /lib/modules/$(uname -r)/kernel/fs:目前已加载到内存中支持的文件系统:cat /proc/filesystem ...
- VC6下 try catch 在release下的杯具(默认情况下,要加上throw语句catch才不会被优化掉)
IDE:VC6 今天遇到一个小问题,把我郁闷了好久,××医生的VulEngine不时在wcsstr处发生crash,加了一番强大的参数检查后,再加上了强大的try catch,其实不是很喜欢用try和 ...
- .NET错误:The tag 'BusyIndicator' ('CallMethodAction')does not exist in XML namespace
将一个项目由VS2010升级为VS2012后,在确保代码无误的情况下编译程序出现以下错误提示: 解决方法:将4.0.0.0的程序集Microsoft.Expression.Interactions.及 ...