DZ数据表设计问题
时间:2011-07-04
来源:互联网
id smallint(6) unsigned NOT NULL auto_increment COMMENT '禁止id',
ip1 smallint(3) NOT NULL default '0' COMMENT 'IP分段1',
ip2 smallint(3) NOT NULL default '0' COMMENT 'IP分段2',
ip3 smallint(3) NOT NULL default '0' COMMENT 'IP分段3',
ip4 smallint(3) NOT NULL default '0' COMMENT 'IP分段4',
admin varchar(15) NOT NULL default '' COMMENT '管理员姓名',
dateline int(10) unsigned NOT NULL default '0' COMMENT '禁止时间',
expiration int(10) unsigned NOT NULL default '0' COMMENT '过期时间',
PRIMARY KEY (id)
) ENGINE=MyISAM COMMENT='禁止访问表';
以上是DZ官方的一个数据表,
在官方有这么一段话:
MEMORY/HEAP类型的表中,要尤其注意规划节约使用存储空间,这将节约更多内存。例如cdb_sessions表中,就将IP地址的存储拆分为4个tinyint(3) UNSIGNED类型的字段,而没有采用char(15)的方式;
求高人解惑。。。。
为啥是三个 tinyint(3) 而不是一个 无符号的 int 不是更加合理吗?
作者: 1033289127 发布时间: 2011-07-04
这一句不是说的很清楚了?
作者: Frears 发布时间: 2011-07-04
作者: 1033289127 发布时间: 2011-07-04
int 占4个字节
4个tinyint(3) UNSIGNED类型的字段 占4个字节
虽然你提到使用int,但是……int不能存储“点”。
这个问题提到的是IP,IP是类似 122.226.224.169 这样的字符串,很显然不是用INT的
作者: kuhanzhu 发布时间: 2011-07-04
引用:
原帖由 kuhanzhu 于 2011-7-4 15:42 发表TINYINT 占1个字节
int 占4个字节
4个tinyint(3) UNSIGNED类型的字段 占4个字节
虽然你提到使用int,但是……int不能存储“点”。
这个问题提到的是IP,IP是类似 122.226.224.169 这样的字符串,很显然不是用 ...
作者: bibi8451 发布时间: 2011-07-04
[ 本帖最后由 Frears 于 2011-7-4 15:59 编辑 ]
作者: Frears 发布时间: 2011-07-04
但是,从数据库处理效率方面讲,一个int的效率要优于tinyint保存
这是摘自DZ程序的一段代码 用与保存获取IP的
function set($key, $value) {
if(isset($this->newguest[$key])) {
$this->var[$key] = $value;
} elseif ($key == 'ip') {
$ips = explode('.', $value);
$this->set('ip1', $ips[0]);
$this->set('ip2', $ips[1]);
$this->set('ip3', $ips[2]);
$this->set('ip4', $ips[3]);
}
}
function get($key) {
if(isset($this->newguest[$key])) {
return $this->var[$key];
} elseif ($key == 'ip') {
return $this->get('ip1').'.'.$this->get('ip2').'.'.$this->get('ip3').'.'.$this->get('ip4');
}
}
明显没有 ip2long,long2ip(mysql php都有这两个函数的,这两个函数是IP字符串同整数之间转换的函数)函数处理的快(没做实验,从经验来讲的)
我现在想说的是4个tinyint的存储空间占用铁定的没有比int的少,但是无论从 mysql的查询效率或者是程序的运行效率都是没有使用无符号int的优越,但是官方使用的是 4个无符号tinyint 其中有什么原委?(目前没有看到官方在利用“.”)
作者: 1033289127 发布时间: 2011-07-04
我觉得四个tinyint和一个int都是储存一个32位IP地址的方法,用哪种方法其实都可以吧,至于效率方面我也没做过测试。可能DZ这么做有其他道理,也可能没有考虑的那么细致。
作者: lujjjh 发布时间: 2011-07-04
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28