2011-08-16 4 views
0

DATETIME 문자열이 있는데 내 데이터베이스에서 일부 검색을 수행하기 위해 스크립트에 DATE 만 필요합니다. 현재 두 가지 시나리오가 있지만 마음에 들지는 않습니다.형식화 된 날짜를 검색하는 데 어떤 시나리오가 더 빠릅니까?

첫 번째 시나리오 : datetime (인 DATETIME 타입)과 date (날짜 형식 인) : 내 MySQL 데이터베이스에

, 나는 두 개의 열이 있습니다.

그런 다음 내 PHP 스크립트에서, 나는 레코드를 저장할 때마다, 나는 (: $date = date("Y-m-d", strtotime($datetime)) 내가 좋아하는 뭔가 생각)을 date 필드에 맞게 변환 한 후 datetime 필드에 내 알려진 문자열을 삽입 한 것입니다.

이렇게하면 필요한 모든 조각이 내 데이터베이스에 저장되고 즉시 검색 할 수 있습니다 (datetimedate 필드 모두).

번째 시나리오 :

MySQL 데이터베이스에만 datetime 열 구성한다.

내 PHP 스크립트는 다른 수정없이 알려진 문자열을 datetime 필드에 삽입합니다.

그리고 내 데이터를 검색 할 때, 내가 좋아하는 뭔가를 할 것이다 : SELECT datetime, DATE(datetime) FROM ...

결론

이러한 시나리오의 빠른 때문에 사용되어야한다? 저장시 또는 검색시 날짜 형식을 사용해야합니까? MYSQL은 PHP 포맷보다 날짜가 빠릅니까? 데이터베이스에 모든 것을 저장하고 그대로 검색하거나 검색시 최소 및 형식 만 저장하는 것이 더 좋습니까? 다음 중 최상의 시나리오는 다음 중 어느 것입니까?

감사합니다.

답변

2

그것은 당신의 쓰임새의 따라 달라

만 다음 datetime에서 date 단일 datetime 열 변환으로 이동, 읽기에 대한 date 필요로하기 위하여려고하는 경우에 충분히 저렴합니다. 이것은 당신이 하나를 추가 한 경우 mysql을가 date 컬럼에 인덱스를 사용 할 수 있습니다로

당신은, 다음 date 열의 이동, 지정된 날짜 (같은 WHERE date = '2011-08-01')에서 행을 선택하려는 경우.

날짜 범위에서 행을 선택하려면 datetime 열로 이동하십시오. WHERE datetime >= '2011-08-01' AND datetime < '2011-08-16' 같은 것을 할 수 있습니다.

1

두 번째 것은 요구 사항에 따라 가치를 얻는 것처럼 가장 빠르고 빠릅니다. 오히려 가치를 얻고 나중에 작업하십시오.

1

이럴

  • 날짜, 또는 부호없는 정수 (유닉스 타임 스탬프) 범위 필터링을위한 더 나은
  • 날짜 날짜 기능, 그것은
  • 피하기 형식의 집계 함수에 유용 할 수 있도록 mysql에서 데이터 (원시 의미)
  • 프리젠 테이션과 관련된 모든 것은 PHP 의무입니다.
+0

그래서, 'datetime' 열을 내 데이터베이스에 저장하고 검색된'datetime'을 사용하여 PHP에서'date'를 검색합니까? – linkyndy

+0

네,'date, strtotime' 만 있으면됩니다. – ajreal

1

귀하의 상황에 따라 결정됩니다 - 글을 쓰는 것 이상의 것을 읽는다면 둘 다 저장할 수 있습니다. 하지만 하나의 필드 (datetime)를 저장하고 PHP 나 MySQL에서 가져 오는 동안 변환 할 것입니다. (datetime을 원하는 형식으로 char로 변환하십시오)

관련 문제