2012-11-04 2 views
1

에 의해 그룹과 MySQL의 쿼리 나는 MySQL의 쿼리를이 (11))는
time : 테이블 (INT (11))속도 최대

총 행 번호는 인덱스 : 270k

Query_time : 1.839096
Lock_time : 0.000042
Rows_sent : 155
Rows_examined : 사용과 286,435

617,451,515,

이 쿼리는 느린 내가 가진 MySQL의-slow.log에, 실행 한 EXPLAIN은 아래와 같습니다.

 
id  select_type  table  type possible_keys key  key_len  ref  rows  Extra 
1  SIMPLE   table_1  ref  address   address 5   const 139138  Using where; Using temporary; Using filesort 

실행 속도를 높이기 위해이 쿼리를 향상시키는 방법은 무엇입니까? 아마 PHP에서 날짜를 변경하면 더 좋을까요? 하지만 PHP에서 다음에 사람이 읽을 수있는 타임 스탬프로 날짜를 지정하고 "그룹 기준"으로 설정하면 MySQL에서 하나의 쿼리가 더 오래 걸릴 것이라고 생각합니다.

아마도이 쿼리를 더 빠르게 만드는 방법을 아는 사람이있을 것입니다.

+1

FROM_UNIXTIME을 (를) 제거하려고 시도 했습니까? –

답변

1

date() 및 FROM_UNIXTIME() 함수를 그룹의 시간에 적용하면 해당 필드에있을 수있는 색인 효과를 제거 할 수 있습니다.

하루에 그룹화해야하는 경우 속도를 높일 수있는 유일한 방법은 날짜 열을 추가하는 것입니다. 그것이 없으면 그룹화하려는 전체 세트를 제거해야합니다. 시작일/종료일을 추가하여 기간을 제한 할 수 있습니다. 그러면 변형되고 그룹화되는 날짜가 줄어 듭니다.

+0

그럼 어떻게 해결할 예정입니까? 조금 더 pls 쓸 수 있습니다. – stefek143

+0

@ stefek143 내 업데이트를 참조하십시오. – Ray

+0

오케이, 나는 당신의 솔루션, Thx를 사용하려고 노력할 것입니다! – stefek143

0

추가 DATE 열을 테이블에 추가하고 색인을 생성하는 것이 좋습니다.