程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql timestamp和int存儲時間

mysql timestamp和int存儲時間

編輯:MySQL綜合教程

mysql timestamp和int存儲時間   Sql代碼    www.2cto.com   show create table 20130107date;      CREATE TABLE `20130107date` (     `id` int(11) NOT NULL AUTO_INCREMENT,     `c_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,     `c_date_long` int(20) NOT NULL,     `idx_date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',     `idx_date_long` int(11) NOT NULL,     PRIMARY KEY (`id`),     KEY `20130107date_idx_date` (`idx_date`),     KEY `20130107date_idx_long` (`idx_date_long`)   ) ENGINE=InnoDB     裡面有90w數據,都是隨機的時間.  先看沒有索引的全表掃描    www.2cto.com   1 :  Sql代碼   select COUNT(*) from 20130107date   where c_date BETWEEN DATE('20110101') and DATE('20110102')     這個需要1.54s    2:  Sql代碼   select COUNT(*) from 20130107date   where c_date_long BETWEEN UNIX_TIMESTAMP('20110101') and UNIX_TIMESTAMP('20110102')     這個是2.3s    但是可以這樣搞  3 :  Sql代碼   select UNIX_TIMESTAMP('20110101') ,UNIX_TIMESTAMP('20110102');     得到結果1293811200和1293897600    然後  Sql代碼   select COUNT(*) from 20130107date   where c_date_long BETWEEN 1293811200 and 1293897600;     發現變成了0.61s  1和2的差距還可以說是比較int和比較timestamp的差距,那麼2和3的差距呢?難道多出來的時間是每一條記錄都要evaluate UNIX_TIMESTAMP('20110102')?    然後用索引  Sql代碼   select COUNT(*) from 20130107date   where idx_date_long BETWEEN UNIX_TIMESTAMP('20110101') and UNIX_TIMESTAMP('20110102');      select COUNT(*) from 20130107date   where idx_date BETWEEN '20110101' and '20110102'     毫無懸念,兩個基本都是瞬時的.   

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved