在mysql中, 若一张表里面不存在varchar、text以及其变形、blob以及其变形的字段的话,那么张这个表其实也叫静态表,即该表的row_format是fixed,就是说每条记录所占用的字节一样。其优点读取快,缺点浪费额外一部分空间。
若一张表里面存在varchar、text以及其变形、blob以及其变形的字段的话,那么张这个表其实也叫动态表,即该表的row_format是dynamic,就是说每条记录所占用的字节是动态的。其优点节省空间,缺点增加读取的时间开销。
所以,做搜索查询量大的表一般都以空间来换取时间,设计成静态表。
CREATE TABLE `table_name` (
`sms_id` bigint(16) NOT NULL AUTO_INCREMENT,
`operation_type` varchar(4) NOT NULL,
`mobile_phone` varchar(30) NOT NULL,
`send_content` varchar(200) NOT NULL,
`priority` tinyint(2) NOT NULL,
`send_state` char(1) NOT NULL COMMENT '发送状态,0、未发送,1、已发送,2、发送失败',
`create_time` datetime NOT NULL,
`send_time` datetime DEFAULT NULL,
`error_message` varchar(200) DEFAULT NULL COMMENT '短信发送失败后填写',
PRIMARY KEY (`sms_id`),
KEY `idx_mobile_phone` (`mobile_phone`),
KEY `idx_state` (`send_state`)
) ENGINE=InnoDB AUTO_INCREMENT=1DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='短信发送表';
本文深入解析MySQL中的静态表和动态表的区别,静态表因固定的行格式而读取速度快但空间利用率低,动态表则反之。通过对比两种表类型的优缺点,帮助读者理解何时使用何种表类型更合适。
744

被折叠的 条评论
为什么被折叠?



