[SQL] 왜 SQL 쿼리의 결과는 내가 예상 한 순서대로 돌아 오지 않는다?
SQL왜 SQL 쿼리의 결과는 내가 예상 한 순서대로 돌아 오지 않는다?
항목이 테이블에 삽입 한 다음 내가 같은 테이블에서 선택 * 같은 쿼리를 작성하는 경우, 왜 결과는 내가 기대하는 순서에 있지?
해결법
-
==============================
1.질의의 순서는 성명에서 조 '에 의해 주문'은을 사용하여 강제 할 수 있습니다. SQL 데이터베이스는 실제로 물건을 넣어 주문할 이해, 또는 주어진 순서로 데이터를 저장하지 않습니다. 이 방법 당신은 당신이 항목을 원하는 주문 어떤 SQL을 말할 필요가 예를 들면 다음과 같습니다.
질의의 순서는 성명에서 조 '에 의해 주문'은을 사용하여 강제 할 수 있습니다. SQL 데이터베이스는 실제로 물건을 넣어 주문할 이해, 또는 주어진 순서로 데이터를 저장하지 않습니다. 이 방법 당신은 당신이 항목을 원하는 주문 어떤 SQL을 말할 필요가 예를 들면 다음과 같습니다.
Select * from Table order by column1 desc
그녀는 나중에 당신을 위해 모든 것,하지만 그녀는 그 동안 그것을 어딘가에 저장 - 보류에 친구에게 물건을 나눠처럼 생각해. 그녀는 당신이 다른 것을위한 공간을 만들기 위해 찾고되지 않습니다 동안 주위를 이동하거나 다시 그녀에게 준 동일한 순서로 그것을 손으로 수 있지만, 그녀가하지 않는, 그래서 당신은 순서를 유지하기 위해 그녀를 말하지 않았다 .
그래서 당신이 다시 넣을 수 있다는 것을, 당신이 데이터베이스에 줄 때 순서를 알아야 할 - 데이터베이스은 내장 된 방법은 본질적으로 어떤 순서에 대해 알고하지 않도록, 백그라운드에서 주변의 사물을 움직일 수 있어야합니다 나중에 원하는 주문. 주문 절은 SQL 데이터에 순서를 부과 할 수 있지만, 그 자체를 기억하거나하지 않습니다.
중요한 점 : SQL 문에 의해 순서없이 지난 1 백만 회를 올바른 순서로 항목을 반환하는 경우에도, 그것이 그렇게 할 것이라는 점을 보장하지 않습니다. 클러스터 된 인덱스가 테이블에 존재하더라도, 결과는 예상 한 순서로 반환이 보장되지 않습니다. SQL 버전이 변경 특히,하지 명시 적 order by 절을 사용하여 원하는 순서대로 될 것 쿼리를 가정 프로그램을 깰 수 있습니다!
-
==============================
2.삽입 된 순서로 결과를 기대하는 일반적인 오해입니다. 클러스터 된 인덱스를 사용하는 경우에도, 결과 세트는 예상대로되지 않을 수 있습니다. 주문을 강제로 유일한 방법은 절 "에 의해 순서의"를 사용하는 것입니다. 순서가 다를 수 있습니다 예상되는 것과 다른 이유. 쿼리는 병렬로 실행될 수 있으며, 결과 집합 병합되거나 가능한 한 빨리으로 결과 집합을 반환하는 동안이 쿼리 최적화 계획 때문일 수 있습니다.
삽입 된 순서로 결과를 기대하는 일반적인 오해입니다. 클러스터 된 인덱스를 사용하는 경우에도, 결과 세트는 예상대로되지 않을 수 있습니다. 주문을 강제로 유일한 방법은 절 "에 의해 순서의"를 사용하는 것입니다. 순서가 다를 수 있습니다 예상되는 것과 다른 이유. 쿼리는 병렬로 실행될 수 있으며, 결과 집합 병합되거나 가능한 한 빨리으로 결과 집합을 반환하는 동안이 쿼리 최적화 계획 때문일 수 있습니다.
from https://stackoverflow.com/questions/10999913/why-do-results-from-a-sql-query-not-come-back-in-the-order-i-expect by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL 문에서 ASP 변수를 사용하는 방법 (0) | 2020.04.16 |
---|---|
[SQL] 페이지로드의 쿼리를 삽입, 두 번 삽입? (0) | 2020.04.16 |
[SQL] NHibernate에 동적 열 번호 (0) | 2020.04.16 |
[SQL] 어떻게 MySQL의 데이터를 생성하는? (0) | 2020.04.16 |
[SQL] "운영자가 존재하지 않습니다 : 정수 =?" 포스트 그레스를 사용하는 경우 (0) | 2020.04.16 |