自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

MySQL查詢時間段使用INT還是DateTime的測試

數(shù)據(jù)庫 MySQL
MySQL查詢時間段是我們經(jīng)常要用到的操作,那么使用INT還是DateTime會更為高效呢?閱讀下文,您就可以找到答案。

MySQL查詢時間段的時候,選擇INT會更高效,還是選擇DateTime會更為高效呢?針對此問題,下面將做一個測試,看看MySQL查詢時間段究竟應(yīng)該使用INT還是DateTime。

環(huán)境:

Windows XP
PHP Version 5.2.9
MySQL Server 5.1 

***步、創(chuàng)建一個表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;

第二步、創(chuàng)建第二個表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;

第三步、創(chuàng)建第三個表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;

第四步、創(chuàng)建第四個表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,現(xiàn)在我們開始做測試,環(huán)境是php,先向各個表插入一百萬條數(shù)據(jù)。插入的時候分200次,每次進庫5000條。

表一執(zhí)行記錄:頁面運行時間: 26.5997889042 秒,插入的時候發(fā)現(xiàn)一個有趣的現(xiàn)象:SELECT count( id ) FROM `date_test` WHERE 1 的結(jié)果是100w,而直接select * from `date_test`卻是1,000,374條結(jié)果。(后來看到這是一個可能接近的值,請參看MySQL FAQ 3.11)。

表二執(zhí)行記錄:頁面運行時間: 62.3908278942 秒,這次記錄是1,000,066條。

表三執(zhí)行記錄:頁面運行時間: 30.2576560974 秒,這次的是1,000,224條。

表四執(zhí)行記錄:頁面運行時間: 67.5393900871 秒,這次的是:1,000,073條。

現(xiàn)在把四個表的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時間)

因為量比較小,所以我們默認即使是微小的變化,也是有意義的。

結(jié)論:

大數(shù)據(jù)量下,如果存在大量的select * from table where 時間>XX這樣的查詢,在MySQL5.1時使用int換datetime是有意義的。
 

 

 

【編輯推薦】

MySQL外鍵和參照完整性的關(guān)系

MySQL轉(zhuǎn)換Oracle的七大注意事項

解讀MySQL數(shù)據(jù)庫產(chǎn)品定價新策略

帶您深入了解MYSQL字符串連接

詳解MySQL+Apache集群模式的實現(xiàn)

責(zé)任編輯:段燃 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-09-25 16:32:02

SQL語句

2010-10-13 16:49:56

MySql查詢時間段

2010-09-24 19:23:51

SQL查詢時間段

2010-11-25 10:21:20

MySql查詢時間段

2025-02-17 09:20:00

MySQL存儲數(shù)據(jù)庫

2022-04-15 10:39:47

MySQL數(shù)據(jù)類型

2010-09-09 10:42:30

SQL函數(shù)時間

2010-07-19 16:52:23

SQL Server

2010-05-31 16:46:40

2010-11-25 11:42:23

MySQL查詢

2021-09-29 20:56:50

MySQLMariaDB字段

2010-09-26 17:14:23

SQL查詢

2011-10-10 17:08:31

數(shù)據(jù)庫SQL Server

2010-09-25 16:53:39

SQL語句

2009-08-05 14:09:04

C#日期轉(zhuǎn)換

2009-05-18 13:56:48

MySQLdatetimetimestamp

2020-08-10 11:20:59

索引MySQL數(shù)據(jù)庫

2015-07-29 13:22:40

.NET代碼

2022-05-17 08:44:33

數(shù)據(jù)庫MySQL

2010-10-28 17:08:11

Oracle查詢
點贊
收藏

51CTO技術(shù)棧公眾號