是否使用int或DateTimeMySQL时间字段描述

是否使用int或DateTimeMySQL时间字段描述
对德德尔MySQL时间字段,发现今天当解析dedecms,所有这一切都是用
`发送` int(10)符号的非空默认'0';

然后我们在网上找到了这篇文章。如果在操作中涉及到时间域,最好在检索时使用int,不需要对字段进行转换,直接用于时间比较。

归根结底,使用int代替数据类型是更有效的。

环境科学uff1a
Windows XP
PHP版5.2.9
MySQL服务器5.1

第一步,创建一个表date_test(非固定长度,int时间)
创建表(` ` ` date_test `测试。
` ID ` int不空auto_increment,
` start_time ` INT NOT NULL,
` some_content ` varchar(255)不为空,
主键(id)
InnoDB引擎=);

第二步,创建第二台date_test2(固定长度,int时间)
创建表(` ` ` date_test2 `测试。
` ID ` int不空auto_increment,
` start_time ` INT NOT NULL,
` some_content ` char(255)不为空,
主键(id)
InnoDB引擎=);

第三步,创建第三个表date_test3(varchar、日期时间)
创建表(` ` ` date_test3 `测试。
` ID ` int不空auto_increment,
` start_time `日期不为空,
` some_content ` varchar(255)不为空,
主键(id)
InnoDB引擎=);

第四步,创建第四个表date_test3(字符、日期时间)
创建表(` ` ` date_test4 `测试。
` ID ` int不空auto_increment,
` start_time `日期不为空,
` some_content ` char(255)不为空,
主键(id)
InnoDB引擎=);

好了,现在我们开始测试,环境是PHP,首先在每个表中插入一百万个数据。插入分为200次,每次输入5000个条目。

表1执行记录:页面运行时间:26.5997889042秒,插入一个有趣的现象:select count(ID)从` date_test ` 1,结果是100W,直接选择*从` date_test ` 1000374结果。(看了以后觉得这是一个可能的值,参见MySQL常见问题3.11)。

表两个执行记录:页面运行时间:62.3908278942秒,这一次记录是1000066。

表三执行记录:页面运行时间:30.2576560974秒,这一次为1000224。

表四执行记录:页面运行时间:67.5393900871秒,这一次:1000073。

再加上现在的四表start_time字段索引。

测试四个表的更新,分别更新100个记录,并记录时间:

表1:页面运行时间:2.62180089951秒(非固定长度,int时间)

表二:页面运行时间:2.5475358963秒(固定长度,int时间)

表三:页面运行时间:2.45077300072秒(varchar、日期时间)

表四:页面运行时间:2.82798409462秒(字符、日期时间)

测试四个表的读取,选择100个随机记录,查询条件的主密钥ID和记录时间:

表1:页面运行时间:0.382651090622秒(非固定长度,int时间)

表二:页面运行时间:0.542181015015秒(固定长度,int时间)

Table three: page running time: 0.334048032761 seconds (varchar, datetime time)

表四:页面运行时间:0.506206989288秒(字符、日期时间)

实验四表的读数,随机选出10个记录,star_time作为查询条件,并记录时间:

表1:页面运行时间:30.1972880363秒(非固定长度,int时间)

表二:页面运行时间:65.1926910877秒(固定长度,int时间)

表三:页面运行时间:39.7210869789秒(varchar、日期时间)

表四:页面运行时间:70.4632740021秒(字符、日期时间)

因为数量少,我们默许甚至小的变化,这也是有意义的。

结论:

在大量的数据,如果有大量的查询,如SELECT * FROM表时间> XX,它是使用int datetime在MySQL5.1的意义。

tag:描述字段时间电脑软件int

相关内容