2014-10-24 2 views
2

event_date 유형 DATETIME이며 $date = '2014-11-07'WHERE 절에서 DATE 또는 DATE_FORMAT의 오버 헤드는 얼마입니까?

나는 쿼리를 실행할 수

$this->Select(" * FROM events WHERE DATE(event_date) = ?", 
       array($date)); 

또는

$this->Select(
     " * FROM events WHERE DATE_FORMAT(event_date,'%Y-%m-%d') = ?", 
       array($date)); 

그러나 나는 그것이 모든 날짜의 작업을 수행 할 것입니다 원인이 방황하고있어 열? 대신

$this->Select(" * FROM events WHERE event_date = ?", 
       array($date. ' 00:00:00')); 

를 사용하는

아마도 더 나은 것입니까?

+0

의 모든 EVENT_DATE 행은 시간과 0시 0분 0초이 있습니까 phpMyAdmin을 같이? – baao

+0

@michael 죄송합니다. ony 날짜가 저장되고 있습니다, 나는이 db를 설계하지 않았습니다 :/ – andrew

+0

그러면 제 3의 옵션을 사용할 것입니다. 이것에 대한 벤치 마크 테스트를 했습니까? interessting 될 것입니다 – baao

답변

0

위의 질문에 대한 벤치 마크 표시 :

SELECT * FROM `test` WHERE date(event_date) ='2014-11-07' limit 0,10000; 
--Showing rows 0 - 29 (10,000 total, Query took 0.0087 sec) 

SELECT * FROM `test` WHERE date_format(event_date,'%Y-%m-%d') ='2014-11-07' limit 0,10000; 
--Showing rows 0 - 29 (10,000 total, Query took 0.0119 sec) 

SELECT * FROM `test` WHERE event_date ='2014-11-07 00:00:00' limit 0,10000; 
--Showing rows 0 - 29 (10,000 total, Query took 0.0076 sec) 

출력을

관련 문제