2017-02-12 11 views
1

가정하자에 가입하세요. 다른 테이블, 테이블 2, 그냥 ID를 가지고 그 기본 키입니다.내가 두 개의 테이블, 두 개의 필드와 <strong>표</strong>이 결과

따라서 테이블 1의 데이터는 클러스터 된 인덱스로 인해 비용이 많이 부과됩니다.

나는 갈 경우 결과는 항상 테이블 1에서 클러스터 된 인덱스가 정의하는 순서로 될 수 없습니다

Select * from table1 join table2 using (id) 

. 이 경우 특정/복합 클러스터 된 인덱스가있는 테이블에 여러 테이블을 조인 할 때 이런 종류의 정렬을 어떻게 얻을 수 있습니까?

+2

주의하십시오. 쿼리에'ORDER BY' 절을 포함시키지 않는 한 SQL 결과 집합 순서는 공식적으로 예측할 수 없습니다 *. * 공식적으로 예측할 수없는 * 테스트에서 잡기가 더 어렵 기 때문에 무작위보다 더 나쁩니다. 결과 집합의 순서는 그대로 유지 될 때까지 ** 그대로 유지됩니다. ** 인덱스 순서가 일치 할 때 'ORDER BY'는 많이 들지 않습니다. 그것. –

+1

결과 집합을 정렬하려면 'order by'를 사용해야합니다. 'order by '를 사용하지 않으면 임의의 순서가 생기게됩니다. 이것은 현재 희망하는 순서 일 수는 있지만, 어떤 점에서도 변하지 않을 수 있습니다 (예 : mysql이 다른 명령을 선택할 때) 실행 계획은 'straight_join'이 여기에있는 효과입니다.) – Solarflare

답변

-2

당신이 찾고있는 것은 STRIAGHT_JOIN입니다.

당신이 할 경우

SELECT * from table1 STRIAGHT_JOIN table2 using (id) 

순서가 유지됩니다.

+0

감사합니다! --------- –