> 데이터 베이스 > MySQL 튜토리얼 > SQL Server에서 'SELECT TOP 100 PERCENT'를 사용하는 이유: 필요한 사악하거나 쓸모없는 구문?

SQL Server에서 'SELECT TOP 100 PERCENT'를 사용하는 이유: 필요한 사악하거나 쓸모없는 구문?

Patricia Arquette
풀어 주다: 2025-01-01 13:04:11
원래의
988명이 탐색했습니다.

Why Use `SELECT TOP 100 PERCENT` in SQL Server:  A Necessary Evil or Useless Syntax?

SELECT TOP 100 Percent 활용: 사용되지 않는 기능에 대한 통찰력

전통적으로 SELECT TOP 100 PERCENT는 뷰 정의에 사용되어 다음에 대한 제한을 우회했습니다. 이러한 상황에서는 ORDER BY를 사용합니다. 그러나 특정 코드베이스에서는 이 기능이 동적 SQL 문 내에서 이상하게 나타납니다. 이렇게 포함시키는 데 정당성이 있습니까, 아니면 단순히 TOP 100 PERCENT를 제외하는 것과 동일한 결과를 낳는 것입니까?

놀랍게도 SELECT TOP 100 PERCENT는 "중간 구체화" 영역에서 독특한 적용 방식을 찾았습니다. 이 구성을 활용함으로써 쿼리 결과를 캐시하고 후속 실행을 최적화할 수 있었습니다. Adam Machanic의 기사에서는 이 기술에 대해 자세히 설명합니다.

이러한 방식으로 SELECT TOP 100 PERCENT를 사용하는 방식은 본질적으로 문제가 되지는 않지만 극도의 주의가 필요하며 꼭 필요한 경우에만 사용해야 합니다. 특정 상황과 환경적 요인에 의존하기 때문에 스키마, 인덱스 구조 또는 행 개수의 미묘한 변화에 취약하여 예상치 못한 예측 불가능한 동작이 발생할 수 있습니다.

명확하게 설명하려면 다음 예를 고려하세요.

무효화 예시:

SELECT foo From MyTable WHERE ISNUMERIC (foo) = 1 AND CAST(foo AS int) > 100
로그인 후 복사

무효화 예:

SELECT foo
FROM
    (SELECT foo From MyTable WHERE ISNUMERIC (foo) = 1) bar
WHERE
    CAST(foo AS int) > 100
로그인 후 복사

유효한 예(SQL Server 2000 및 2005):

SELECT foo
FROM
    (SELECT TOP 100 PERCENT foo From MyTable WHERE ISNUMERIC (foo) = 1 ORDER BY foo) bar
WHERE
    CAST(foo AS int) > 100
로그인 후 복사

또한 SELECT TOP 100 PERCENT는 범위를 SQL로 확장합니다. Server 2005, 잠재적으로 무제한 결과 가능 함께:

SELECT TOP 2000000000 ... ORDER BY...
로그인 후 복사

위 내용은 SQL Server에서 'SELECT TOP 100 PERCENT'를 사용하는 이유: 필요한 사악하거나 쓸모없는 구문?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿