답변:
글쎄, 그것은 본다 TOP은 A는 BIGINT 당신이 사용하지 않는 경우 PERCENT를 . 즉 , BIGINT 의 최대 값을 전달할 수 있습니다 .
SELECT TOP (9223372036854775807) * FROM table1
나는 당신이 그 큰 테이블을 보게 될 것을 정말로 의심합니다. 쿼리 계획에 어떤 영향을 줄지 잘 모르겠습니다.
@x가 BIGINT 라고 가정하면 SET @x = 0x7fffffffffffffff일부는 더 명확 할 수 있습니다. 어쨌든 기억하기가 더 쉽습니다.
7하고 나머지 F는 8 바이트에 대해 총 16 문자가 필요하다는 것을 기억하는 것이 더 쉽습니다 . 그리고 예, 해당 데이터 유형의 변수에 할당하면 암시 적으로 변환됩니다.
당신은 또한 고려할 수 있습니다
SET ROWCOUNT @x;
SELECT Foo
FROM Bar
ORDER BY Baz;
대신에
SELECT TOP (@x) Foo
FROM Bar
ORDER BY Baz;
@x를 설정해야하는 값은 0비활성화하는 것입니다.
데이터 수정 명령문에는 더 이상 사용되지 않지만에 대해서는 더 이상 사용되지 않습니다 SELECT.
2012 년에는 ROWCOUNT0과 0이 아닌 일부 값 의 경우 다른 계획이 컴파일됩니다 .
는 경우 ORDER BY Baz받는 의미를 부여 만이 TOP결과에 대한 프리젠 테이션 순서를 제공하기보다는 당신은 인덱스가에서 불필요한 종류의 피할 것이다 두 쿼리에이 다음 분할을 지원하지 않는 0경우.
SELECT TOP 100 PERCENT를 사용하면 쿼리에서 "TOP"을 사용할 때 발생하는 모든 오류를 무시할 수 있습니다.
select top(SELECT COUNT(*) FROM YourTable) * From YourTable
@x)가 있으며 이제 @x실제로 테이블에 몇 개의 행이 있는지에 관계없이 "모든 행"을 의미하도록 전달할 값을 묻고 있습니다. OP의 요구 사항에 맞게 솔루션을 조정하는 방법을 알아낼 수 있습니다.
(SELECT COUNT(*) FROM YourTable)값이 아닙니다.
TOP ... ORDER BY뭔가? 는 ISORDER BY뭔가 아직도 당신이 모두 선택하는 경우에 필요?