2017-05-03 1 views
0

가 어떤 색인이하는 가장 좋은 방법이 될 것입니다인덱싱 SQL 쿼리가

ALTER TABLE yelp.business ADD INDEX latitude_longitude_count_ndex (business_id, latitude, longitude); 

하지만이 (매우 오래 걸리는 즉, 나는 이것을 실행 밤새 약 2 시간 후에 연결이 끊어졌습니다.)

저는 MySQL에서 이것을 실행하고 있습니다.

select bus.business_id, bus.latitude, bus.longitude, sum(chk.checkin_count) as checkin_count 
from yelp.business bus 
inner join yelp.checkin chk 
    on bus.business_id=chk.business_id 
group by bus.business_id, bus.latitude, bus.longitude 
order by bus.business_id 
limit 10; 

쿼리 너무 오래 걸리는 :이 색인에 저를 얻었 기 때문에

사이드 질문

,이 코드는 그 이유가 있나요? 제한을 1로 변경하더라도 매우 오래 걸립니다. 나는 결국 4 분 후에 그것을 멈췄다. 그러나 나는 그렇게 오래 걸리지 않아야한다고 느꼈다.

+0

나는 아마도 속도 [_here_]에 충고했다. 충분하지 않다면,'SHOW CREATE TABLE'과'EXPLAIN SELECT ... '를 제공하십시오. –

+0

감사합니다. 나는 여기에 하이퍼 링크가 있다고 생각하지 않지만 지금은 효과가있는 것처럼 보인다. – mmv456

+0

죄송합니다. - [_in 당신의 다른 질문 _] (http://stackoverflow.com/a/43750755/1766831) –

답변

1

WHERE 또는 JOIN 문에 언급 된 열에 대해 인덱스를 설정해야합니다. 따라서 설정 한 색인을 삭제하고 chk.business_id 또는 bus.business_id 또는 둘 모두에 하나를 추가하고 더 빠를 것이 있는지 확인하십시오.