MySQL timestampタイプ比較のテスト
1093 ワード
TIMESTAMPタイプフィールドとCHARの比較:
TIMESTAMPタイプフィールドとTIMESTAMPの比較:
実験手順:
いずれも100000回実行する、第1種のCHAR変数はTIMESTAMPタイプフィールドと比較し、時間40 s+、第2種のTIMESTAMP(いずれの構成で構成するも)変数はTIMESTAMPタイプフィールドと比較し、時間30 s+.
結論:
比較する変数をターゲットフィールドのタイプTIMESTAMPにして比較すべきである.
BEGIN
#Routine body goes here...
DECLARE rdToday CHAR(10) DEFAULT CURDATE();
DECLARE rdBegin CHAR(19) DEFAULT CONCAT(rdToday, '00:00:00');
DECLARE rdEnd CHAR(19) DEFAULT CONCAT(rdToday, '23:59:59');
SELECT mdc_ordertime FROM mz_drugrecipe WHERE mdc_ordertime BETWEEN rdBegin AND rdEnd;
END
TIMESTAMPタイプフィールドとTIMESTAMPの比較:
BEGIN
#Routine body goes here...
DECLARE rdBegin TIMESTAMP DEFAULT CURDATE();
DECLARE rdEnd TIMESTAMP DEFAULT TIMESTAMPADD(SECOND, -1, DATE_ADD(CURDATE(),INTERVAL 1 DAY));
-- :
-- DECLARE rdToday CHAR(10) DEFAULT CURDATE();
-- DECLARE rdBegin CHAR(19) DEFAULT CONCAT(rdToday, '00:00:00');
-- DECLARE rdEnd CHAR(19) DEFAULT CONCAT(rdToday, '23:59:59');
SELECT mdc_ordertime FROM mz_drugrecipe WHERE mdc_ordertime BETWEEN rdBegin AND rdEnd;
END
実験手順:
いずれも100000回実行する、第1種のCHAR変数はTIMESTAMPタイプフィールドと比較し、時間40 s+、第2種のTIMESTAMP(いずれの構成で構成するも)変数はTIMESTAMPタイプフィールドと比較し、時間30 s+.
結論:
比較する変数をターゲットフィールドのタイプTIMESTAMPにして比較すべきである.