오늘 Deder MySQL 시간 필드를 발견, 사용 된다
'SendData' int (a) 서명 하지 NULL 기본 '0';
다음 인터넷에서이 문서를 찾아, 그것을 시간 필드 필드 작업에서 변환 없이 검색, int와 작업에 참가 하는 경우 직접 비교에 사용 된 시간! 효율성 높은 아래 설명 된 대로 이기도 합니다.
최종 분석에서: int. 데이터 형식을 대체 하는 효율적입니다
환경:
윈도우 XP
PHP 버전 5.2.9
MySQL 서버 5.1
첫 번째 단계는, 표 date_test (int 시간, 하지 고정된 길이)를 만들
CREATE TABLE '테스트'. 'Date_test' (
'ID' INT 하지 auto_increment, NULL
' Start_time ' INT not NULL
' Some_content ' VARCHAR (255) NULL이 아닌
기본 키 (이 하 ' id')
) 엔진 InnoDB; =
2 단계, 두 번째 테이블 date_test2를 만들 (고정된 길이, int 시간)
CREATE TABLE '테스트'. 'Date_test2' (
'ID' INT 하지 auto_increment, NULL
' Start_time ' INT not NULL
' Some_content ' CHAR (255) NULL이 아닌
기본 키 (이 하 ' id')
) 엔진 InnoDB; =
3 단계, 세 번째 테이블 date_test3를 만들 (varchar, datetime 시간)
CREATE TABLE '테스트'. 'Date_test3' (
'ID' INT 하지 auto_increment, NULL
' Start_time ' DATETIME NULL이 아닌
' Some_content ' VARCHAR (255) NULL이 아닌
기본 키 (이 하 ' id')
) 엔진 InnoDB; =
4 단계, 네 번째 테이블 Date_test3 (char, datetime 시간)
CREATE TABLE '테스트'. 'Date_test4' (
'ID' INT 하지 auto_increment, NULL
' Start_time ' DATETIME NULL이 아닌
' Some_content ' CHAR (255) NULL이 아닌
기본 키 (이 하 ' id')
) 엔진 InnoDB; =
좋아, 우리는 테스트를 할 시작, 이제는 환경 PHP, 각 테이블에 데이터의 첫 번째 삽입 1 백만 조각입니다. 삽입 시간 200 시간 나누어져, 각 시간 입력 창 5000.
표 1 실행 기록: 페이지 실행 시간: 26.5997889042 초, 재미 있는 현상이 발견 삽입할 때: 선택 (id) 수 'date_test' 1 곳에서 100w에 직접 선택 결과 *에서 ' Date_ 테스트 ' 1,000,374 결과입니다. (나중에 잠재적으로 가까운 값에 대 한 MySQL FAQ 3.11 참조.)
표 II 실행 기록: 페이지 실행 시간: 62.3908278942 초,이 레코드는 1,000,066.
표 3 실행 기록: 페이지 실행 시간: 30.2576560974 초, 이것은 1,000,224.
테이블 4 실행 기록: 페이지 실행 시간: 67.5393900871 초,이 시간 이다: 1,000,073.
이제 인덱스에 4 개의 테이블의 Start_time 필드 하나를 추가 합니다.
4 개의 테이블에 대 한 업데이트를 테스트 하 고 별도로, 100 개의 레코드를 업데이트 한 시간을 기록:
테이블: 페이지 실행 시간: 2.62180089951 초 (하지 고정된 길이, int 시간)
표 2: 페이지 실행 시간: 2.5475358963 초 (고정된 길이, int 시간)
표 3: 페이지 실행 시간: 2.45077300072 초 (varchar, datetime 시간)
표 4: 페이지 실행 시간: 2.82798409462 초 (char, datetime 시간)
4 테이블의 읽기 테스트, 100 무작위 레코드를 선택, 기본으로 쿼리 ID를 키 고 시간을 기록.
테이블: 페이지 실행 시간: 0.382651090622 초 (하지 고정된 길이, int 시간)
표 2: 페이지 실행 시간: 0.542181015015 초 (고정된 길이, int 시간)
표 3: 페이지 실행 시간: 0.334048032761 초 (varchar, datetime 시간)
표 4: 페이지 실행 시간: 0.506206989288 초 (char, datetime 시간)
4 테이블의 읽기 테스트, 10 랜덤을 선택 기준으로 star_time를 별도로 기록 하 고 시간을 기록.
테이블: 페이지 실행 시간: 30.1972880363 초 (하지 고정된 길이, int 시간)
표 2: 페이지 실행 시간: 65.1926910877 초 (고정된 길이, int 시간)
표 3: 페이지 실행 시간: 39.7210869789 초 (varchar, datetime 시간)
표 4: 페이지 실행 시간: 70.4632740021 초 (char, datetime 시간)
볼륨은 작은, 그래서 우리는 심지어 작은 변화를 기본, 때문에 그것은 의미가 있습니다.
결론:
큰 데이터 볼륨, 많은 선택 하는 경우 * 테이블에서 어디 시간 > xx 같은 쿼리, MySQL5.1에 datetime에 대 한 int를 사용 하는 것.