2008-10-13 4 views
2

기본적으로 하나의 베네 치안 블라인드가있는 시뮬레이트 된 사무실 실에서 레이 트레이싱 시뮬레이션 결과 인 MySQL 테이블을 다루고 있습니다. 나는 대개 시간과 블라인드 설정의 독특한 조합에 대한 시뮬레이션 결과를 가져와야합니다. 그래서 나는이 쿼리는 점점 더 이상의 행을 반환해서는 안하기 때문에,MySQL의 대형 테이블에서 단일 행 쿼리 최적화

SELECT result FROM results WHERE timestamp='2005-05-05 12:30:25' \ 
     AND opening=40 AND slatangle=60 

이 의심 최적화 할 눈을 끄는 일을 끝낸다. 각 행을 고유하게 식별하는 세 개의 열에 인덱스를 정의하는 것이 합리적입니까? 아니면 사용할 수있는 다른 기술이 있습니까?

답변

3

답은 가장 확실합니다. timestamp에 고유 인덱스를 정의하면, MySQL을 열고 slatangle하면 디스크 찾기가 거의없는 행을 찾을 수 있습니다.

timestamp, opening, slateangle 및 result에 대한 색인을 생성 해보십시오. MySQL은 데이터 파일을 전혀 건드리지 않고 인덱스에서 데이터를 가져올 수 있습니다.

MySQL 매뉴얼에는 section about optimzing queries이 있습니다.

2

3 개의 색인을 추가하지 않는 것이 좋습니다. 세 개의 열 모두를 사용하는 색인이 더 좋을 수도 있으며 고유 키가 고유하다고 확신하는 경우에만 해당 조합에 고유 한 기본 키를 설정하는 것이 가장 좋습니다.

3

나는 추가하는 것이 좋습니다 LIMIT 1; 을 쿼리 끝에 추가하십시오.

윌리엄