MySQL的一些小细节
1.int类型后边的括号中的值并不会影响其存储值的范围,仅仅指示了整数值的显示宽度。例如int(8)和int(10)的存储范围都是-2147483648~2147483647。当你选择了填充零时,才能看出区别。
2.主键自增id适合设置为无符号的int类型,这样最大值可以增加一倍:4294967295(2的32次方减一)。
3.要建立索引的字段最好设为NOT NULL,当然其他字段也最好这样做。
4.varchar的长度肯定时越短越好,不要使用默认的255,更长的列会消耗跟多的内存。
5.char类型存储的数据长度小于最大长度时会用空格填充,检索时再剔除,因此如果存入的string最后有空格,查询出来是没有的。
6.Memory引擎不支持blob和text类型字段,如果列表查询使用了blob或text的列且使用了临时表排序,那么将会使用磁盘临时表,严重影响性能。
7.时间戳格式timestamp和datetime,前者占用空间小(4bytes)且与时区相关,优先使用。除非是范围超过了timestamp的范围(1970~2038),不推荐使用int类型。
8.推荐使用枚举类型(enum)来替代字符串(如性别男女),但注意其实际存储的是整数(1,2,...对应字段值顺序),排序也是按照整数大小排序,而非映射的字符串。
9.经常变动的列不适合使用枚举类型,因为Alert Table对于数据量大的表来说,性能是不得不考虑的一件事情。
10.IPv4地址可以保存为无符号int类型,因为它实际上是一个32位的无符号整数,使用mysql函数(INET_ATON和INET_NTOA)进行转换。
11.范式与反范式的使用并不是绝对性的,需要根据自己的业务和数据量合理折中使用。数据量大查询频率高的时候适当的建立冗余字段减少关联,而数据少关联紧密的场合遵循范式化设计。
12.sql中limit 5
表示搜索前五条记录,limit 5,10
检索6-10条记录,limit 5,-1
表示6-last条记录。
13.多表联查count
统计时,尽量根据查询条件减少连表的数量,数量越少查询时间越少,少一个表(假如这个表数据量很大或者属于别的库那优化的效果更好)可能减少至少一半的时间。
14.Mysql是不支持嵌套事务
的,开启了一个事务的情况下,再开启一个事务,会隐式的提交上一个事务。要使用嵌套事务可以通过代码控制开启次数计数,最后提交时判断计数。
原文地址:https://www.cnblogs.com/nandi001/p/12909164.html
- Web项目添加Maven支持
- Jquery 获取第一个子元素
- Dropwizard框架入门
- Java 解析Excel文件为JSON
- SQL语句大小写是否区分的问题,批量修改整个数据库所有表所有字段大小写
- CentOS 6.5 安装nginx 1.6.3
- C#创建数字证书并导出为pfx,并使用pfx进行非对称加解密
- MyBatis两张表字段名相同产生的问题
- mongo 3.0 备份和还原数据库 ,及too many positional arguments错误
- AngularJs HTTP响应拦截器实现登陆、权限校验
- C# 读写App.config配置文件的方法
- Golang语言社区--Go语言基础第四节类型
- Golang语言社区--go语言编写Web程序
- Golang语言社区--Go语言基础第五节流程控制
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解