2009-06-21 2 views
1

저는 MySQL을 처음 사용하지만 오랫동안 Oracle을 사용해 왔습니다. 나는 약간의 MySQL의 LIMIT 키워드에 대해 혼란 스럽다. 이 키워드는 쿼리가 실행될 때마다 반환되는 데이터의 순서가 동일 함을 의미합니까? 쿼리에 영향을주는 테이블에 더 많은 데이터가 추가되면 어떻게 될까요? 그리고 order-by 절이 없으면 데이터는 어떻게 정렬됩니까?MySQL의 LIMIT 키워드는 반환 된 데이터의 순서를 보장합니까?

답변

4

아니요, LIMIT은 비 결정적입니다. 순서는 데이터, 사용되는 인덱스, mysql 버전 간의 내부 변경 사항, 디스크상의 데이터 순서 등에 따라 다릅니다.

일반적으로 LIMITORDER BY을 결합하여이 문제를 방지합니다.

1

ORDER BY를 지정하지 않으면 첫 번째로 반환 될 행에 대한 보장이 없습니다.

실제로 주문은 일반적으로 클러스터 된 인덱스 순서와 일치하며 호출간에 변경되지는 않습니다. 이 동작에 의존하지 마십시오.

2

LIMIT은 반환 된 데이터에 순서를 지정하지 않습니다.

ORDER BY 절이 사용되지 않으면 제한이 실행될 때마다 동일한 순서가 반환된다는 보장이 없습니다. 데이터가 삽입되면 순서화 된 결과와 순서가 지정되지 않은 결과의 결과에 영향을 미칠 수 있습니다.

ORDER BY 절을 생략하면 기본적으로 데이터베이스를 사용하여 순서를 결정할 수 있으며 아마도 테이블의 인덱싱 방법에 따라 달라질 수 있습니다. 테이블이 다시 인덱싱되거나 더 많은 데이터가 추가되면 시간이 지남에 따라 변경됩니다.

관련 문제