한 프로그래머는 동일한 데이터베이스 구조를 사용하는 동일한 애플리케이션과 동일한 데이터를 두 개의 개별 데이터베이스 (Oracle 8 및 Oracle 9)에서만 테스트하고 비교합니다.
앱은 절 없이 쿼리를 실행합니다 ORDER BY
.
그는 ORDER-BY-less 쿼리는 두 데이터베이스에서 동일한 순서로 행을 반환해야한다고 주장합니다.
ORDER BY 절을 명시 적으로 제공하지 않으면 동일한 행 순서에 대해 보증하지 않습니다 .
데이터베이스는 동일한 인덱스와 키를 가지고 있습니다. 그러나 Explain Plan은 데이터베이스 중 하나에서 엔진이 결합 된 테이블 중 하나의 키를 사용하고 다른 데이터베이스에서는 다른 테이블을 사용하고 있음을 보여줍니다.
그는 두 DB 환경이 동일하지 않다고 주장한다. 이는 서로 다른 통계, rdbms 엔진 등이 있지만 원래 데이터베이스에있는 모든 인덱스를 복제하지 못했기 때문이 아니다.
나는 그 ORDER BY
명령이 정말로 그렇게 중요하다면 명시 적으로 조항을 제공해야한다고 그에게 말했다 .
질문
그래서 나는 그를 더 잘 설명 할 수 있습니다.
명시 적으로 ORDER BY 절을 제공하지 않을 때 쿼리는 어떤 순서로 행을 가져 오며, 해당 쿼리는 왜 같은 순서로 행을 반환하지 않습니까?