博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql查询优化2:列选择原则
阅读量:4325 次
发布时间:2019-06-06

本文共 788 字,大约阅读时间需要 2 分钟。

1、字段类型选择优先级:整型 > date,time > enum ,char >varchar >blob,text

2、列的特点分析

整型:定长,没有国家/地区之分,没有字符集的差异

如:tinyint 1,2,3,4,5  <---> char(1) a,b,c,d,e

从空间上都是占1个字节,但是order by排序时,tinyint快,原因时是:因为char类型需要考虑字符集和校对集

time :定长,运算快,节省空间,如果考虑时区写sql时不方便

enum :能起到约束的作用,内部实质是用整型来存储,但与char联查时,内部要经历串与值得转化

char :定长,要考虑字符集和校对集

varchar :不定长,要考虑字符集得转换与排序时得校对集,速度慢

text /blob : 可存储较大的数据,但无法使用内存临时表(排序等操作只能在磁盘上进行)

## 关于date/time 的选择,建议用int unsigned not null 来存储时间戳

## 指定数据类型时,够用就可以了,不建议多给,因为大的字段浪费内存,影响速度

以年龄为例:tinyint unsigned  not null 可以存储255岁,用int 会浪费3个字节

以varchar(10),varchar(300) ,如果存储的内容相同时,在表联查时,varchar(300)要花更多内存

举例:以性别为例,

char(1):要用到3个字长字节

enum('男','女'):内部会转为数字来存,多了一个转换过程

tinyint (1/2/3): 定长,1个字节(最快)

 

3、尽量避免用NULL()

原因:NULL不利于索引,要用特殊的字节来标注;null在磁盘上占据的空间其实更大

 

转载于:https://www.cnblogs.com/wodexk/p/10708475.html

你可能感兴趣的文章
阶段3 2.Spring_04.Spring的常用注解_7 改变作用范围以及和生命周期相关的注解
查看>>
阶段3 2.Spring_05.基于XML的IOC的案例1_3 测试基于XML的IOC案例
查看>>
阶段3 2.Spring_04.Spring的常用注解_4 由Component衍生的注解
查看>>
阶段3 2.Spring_06.Spring的新注解_2 spring的新注解-Bean
查看>>
阶段3 2.Spring_04.Spring的常用注解_6 用于注入数据的注解
查看>>
阶段3 2.Spring_06.Spring的新注解_3 AnnotationConfigApplicationContext的使用
查看>>
阶段3 2.Spring_07.银行转账案例_2 案例中添加转账方法并演示事务问题
查看>>
阶段3 2.Spring_07.银行转账案例_6 测试转账并分析案例中的问题
查看>>
阶段3 2.Spring_07.银行转账案例_7 代理的分析
查看>>
阶段3 2.Spring_07.银行转账案例_3 分析事务的问题并编写ConnectionUtils
查看>>
阶段3 2.Spring_07.银行转账案例_9 基于子类的动态代理
查看>>
阶段3 2.Spring_08.面向切面编程 AOP_1 AOP的概念
查看>>
阶段3 2.Spring_08.面向切面编程 AOP_4 spring基于XML的AOP-配置步骤
查看>>
阶段3 2.Spring_07.银行转账案例_10 使用动态代理实现事务控制
查看>>
阶段3 2.Spring_08.面向切面编程 AOP_8 spring中的环绕通知
查看>>
阶段3 2.Spring_08.面向切面编程 AOP_10 总结和作业安排
查看>>
阶段3 2.Spring_09.JdbcTemplate的基本使用_2 JdbcTemplate的概述和入门
查看>>
阶段3 2.Spring_08.面向切面编程 AOP_7 通用化切入点表达式
查看>>
阶段3 2.Spring_09.JdbcTemplate的基本使用_6 JdbcDaoSupport的使用以及Dao的两种编写方式...
查看>>
阶段3 2.Spring_08.面向切面编程 AOP_9 spring基于注解的AOP配置
查看>>