내가 마지막으로 당신이 얻을하려고하는 것을 이해 생각하지만, 당신이 데이터베이스 작업을 주문 실시합니다 방법에 대한 매우 혼란스러워 나타납니다.
올바르게 이해하면 많은 수의 행 (예제에서는 1,000 개이지만 행 수가 많지 않음)을 정렬 할 경우 성능에 영향을 미칠 수 있습니다. 따라서 관심있는 100 개의 행만 정렬하여 현혹하려고합니다.
where 절을 적용하여 100 행으로 제한하면 대부분의 경우 최신 DB 시스템이 자동으로 수행 추가 작업을하지 않도록 결과를 좁힌 후까지 정렬합니다. 이것은 100 %의 시간이 아니지만 DB 최적화 프로그램이 먼저 정렬하기로 결정할 때 일반적으로 성능에 따라 또는 쿼리가 정렬을 먼저 수행해야만 정확한 결과를 얻는 데 도움이되는 이유가 있습니다. .
트릭은 tSQL이 절차상의 언어가 아닌 선언적 언어임을 이해해야한다는 것입니다.즉, 언어를 사용하여 원하는 것을 설명하고 옵티마이 저가이를 수행하는 정확한 알고리즘을 파악합니다. C# 또는 Java와 같은 절차 언어를 작성한 것처럼 코드를 최적화하려는 것으로 보입니다. SQL은 쿼리를 코드로 변환하지만 입력 할 때 쿼리를 실행하지 않습니다.
간단히 말해서, DB 엔진은 이러한 유형의 단순 최적화 (및 매우 복잡한 일부 최적화)에 매우 뛰어납니다. 이와 같은 특수 효과로 최적화 프로그램을 최적화하지 않으므로 신경 쓰지 마세요. 더 많은 성능을 얻지는 않을 것이고 쿼리를 작성하는 방법에 따라 실제로 성능을 저하시킬 수 있습니다.
주어진 순서에 대해 처음 1000 개의 행을 선택하는 쿼리를 요청한 다음 * 다른 순서로 결과의 처음 100 개 행을 반환합니까? –
어떤 DBMS를 사용하고 있습니까? – RichardTheKiwi
@ Cyberkiwi MS SQL을 사용합니다. @AdamRobinson. 1000 행 순서를 선택하고 100 행을 반환하고 싶습니다. – Darqer