, , , , , . , ORDER BY?
TOP (100) PERCENT View, PERCENT , ORDER BY, , SQL Server ORDER BY, .
, procs:
IF OBJECT_ID('[dbo].[USP_TopQuery]', 'U') IS NULL
EXECUTE('CREATE PROC dbo.USP_TopQuery AS ')
GO
ALTER PROC [dbo].[USP_TopQuery] @MaxRows NVARCHAR(50)
AS
BEGIN
DECLARE @SQL NVARCHAR(4000) = N'SELECT * FROM dbo.ThisFile'
, @Option NVARCHAR(50) = 'TOP (' + @MaxRows + ') *'
IF ISNUMERIC(@MaxRows) = 0
EXEC sp_executesql @SQL
ELSE
BEGIN
SET @SQL = REPLACE(@SQL, '*', @Option)
EXEC sp_executesql @SQL
END
END
IF OBJECT_ID('[dbo].[USP_TopQuery2]', 'U') IS NULL
EXECUTE('CREATE PROC dbo.USP_TopQuery2 AS ')
GO
ALTER PROC [dbo].[USP_TopQuery2] @MaxRows INT NULL
AS
BEGIN
DECLARE @Rows INT;
SET @Rows = @MaxRows;
IF @MaxRows IS NULL
SELECT *
FROM dbo.THisFile
ELSE
SELECT TOP (@Rows) *
FROM dbo.THisFile
END
Sniffing,
IF OBJECT_ID('[dbo].[USP_TopQuery3]', 'U') IS NULL
EXECUTE('CREATE PROC dbo.USP_TopQuery3 AS ')
GO
ALTER PROC [dbo].[USP_TopQuery3] @MaxRows INT NULL
AS
BEGIN
IF @MaxRows IS NULL
SELECT *
FROM dbo.THisFile
ELSE
SELECT TOP (@MaxRows) *
FROM dbo.THisFile
END
, :
SQL Server Stored Procs , .
, SQL Server , , .
: , .
- sp_executesql , SQL-.
- , TOP ( , )
- , , (
ON, WHERE, HAVING) RECOMPILE, .

, , . , , SQL Server Scan vs Seek, . p >
, , , USP_TopQuery3. .
, " , - , ! ...
" SELECT, - !
SQL SERVER - -