MySQL时刻字段终究运用INT仍是DateTime?ITeye - 亚美娱乐

MySQL时刻字段终究运用INT仍是DateTime?ITeye

2019年03月20日09时17分33秒 | 作者: 映之 | 标签: 时刻,运转,页面 | 浏览: 801

 

环境:
Windows XP
Version 5.2.9
MySQL Server 5.1

第一步、创立一个表date_test(非定长、int时刻)

CREATE TABLE `test`.`date_test` (
`id` INT NOT NULL AUTO_INCREMENT ,
`start_time` INT NOT NULL ,
`some_content` VARCHAR( 255 ) NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = InnoDB;

第二步、创立第二个表date_test2(定长、int时刻)

CREATE TABLE `test`.`date_test2` (
`id` INT NOT NULL AUTO_INCREMENT ,
`start_time` INT NOT NULL ,
`some_content` CHAR( 255 ) NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = InnoDB;

第三步、创立第三个date_test3(varchar、datetime时刻)

CREATE TABLE `test`.`date_test3` (
`id` INT NOT NULL AUTO_INCREMENT ,
`start_time` DATETIME NOT NULL ,
`some_content` VARCHAR( 255 ) NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = InnoDB;

第四步、创立第四个表date_test3(char、datetime时刻)

CREATE TABLE `test`.`date_test4` (
`id` INT NOT NULL AUTO_INCREMENT ,
`start_time` DATETIME NOT NULL ,
`some_content` CHAR( 255 ) NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = InnoDB;

ok,现在咱们开端做,环境是php,先向各个表刺进一百万条数据。刺进的时分分200次,每次进库5000条。

表一履行记载:页面运转时刻: 26.5997889042 秒,刺进的时分发现一个风趣的现象:SELECT count( id ) FROM `date_test` WHERE 1 的成果是100w,而直接select * from `date_test`却是1,000,374条成果。(后来看到这是一个或许挨近的值,请参看MySQL FAQ 3.11)。
表二履行记载:页面运转时刻: 62.3908278942 秒,这次记载是1,000,066条。
表三履行记载:页面运转时刻: 30.2576560974 秒,这次的是1,000,224条。
表四履行记载:页面运转时刻: 67.5393900871 秒,这次的是:1,000,073条。

现在把四个表的start_time字段逐个加上索引。

测验四个表的更新,别离update 100条记载,并记载时刻:
表一:页面运转时刻: 2.62180089951 秒(非定长,int时刻)
表二:页面运转时刻: 2.5475358963 秒(定长,int时刻)
表三:页面运转时刻: 2.45077300072 秒(varchar,datetime时刻)
表四:页面运转时刻: 2.82798409462 秒(char,datetime时刻)

测验四个表的读取,别离select 100条随机记载,以主键id为条件查询,并记载时刻:
表一:页面运转时刻: 0.382651090622 秒(非定长,int时刻)
表二:页面运转时刻: 0.542181015015 秒(定长,int时刻)
表三:页面运转时刻: 0.334048032761 秒(varchar,datetime时刻)
表四:页面运转时刻: 0.506206989288 秒(char,datetime时刻)

测验四个表的读取,别离select 10条随机记载,以star_time为条件查询,并记载时刻:
表一:页面运转时刻: 30.1972880363 秒(非定长,int时刻)
表二:页面运转时刻: 65.1926910877 秒(定长,int时刻)
表三:页面运转时刻: 39.7210869789 秒(varchar,datetime时刻)
表四:页面运转时刻: 70.4632740021 秒(char,datetime时刻)

由于量比较小,所以咱们默许即使是细小的改变,也是有意义的。

定论:

大数据量下,假如存在很多的select * from table where 时刻 XX这样的查询,在MySQL5.1时运用int换datetime是有意义的。

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表亚美娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章