2010-05-18 11 views
0

mysql select 문을 실행할 때 매우 많은 행을 이미 삭제했기 때문에 매우 오래 걸립니다.아래쪽에서 mysql 테이블을 검색하십시오.

맨 위와 반대로 아래에서부터 스캔을 시작할 수있는 방법이 있습니까?

+0

morf tceles 심각하게 : DB 레이아웃에 대해 좀 더 알려주시겠습니까? 그리고 왜 아래에서 스캔하는 것이 더 빠를 것이라고 생각합니까? –

답변

2

쿼리는 특정 순서로 테이블을 검색하지 않습니다. ORDER BY를 사용했기 때문에 순서에 따라 특정 인덱스 (예 : 범위 스캔)를 통과하는 경우 그렇게 할 수 있습니다.

데이터베이스는 그렇게 작동하지 않습니다. 그런 식으로 자신의 행동에 의존 할 수는 없습니다.

전체 테이블 스캔을 수행하는 경우, 특히 많은 행을 최근에 삭제 한 경우에는 시간이 걸릴 것으로 예상하십시오. 그러나 많은 행이 있으면 더 오래 걸립니다.

대신 쿼리가 인덱스를 사용하는지 확인하십시오. Explain 계획을보고 인덱스를 사용하는지 확인하십시오.

2

테이블에 대한 추가 색인이 필요할 수 있습니다. 또한 때때로 OPTIMIZE TABLE 및 ANALYZE TABLE을 발행하는 것이 좋습니다. 적절한 색인이 있으면 삭제 된 행, 대량의 행조차도 쿼리 성능에 영향을 미치지 않아야합니다.