是否使用int或DateTimeMySQL时间字段描述
`发送` 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的意义。