提问人:Makiyo 提问时间:10/27/2023 最后编辑:marc_sMakiyo 更新时间:10/27/2023 访问量:58
我的存储过程是否运行开始-结束部分?
Does my stored procedure run the begin-end part?
问:
法典:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[vvvvvv]
@doeverything CHAR(1), --Y or N
@pagenumber int --page number in total is 19
AS
SET NOCOUNT ON;
BEGIN
IF @pagenumber = 1
BEGIN
-- many temp table here to merge
END
DECLARE @pageSize INT;
SET @pageSize = 300000;
;WITH T AS
(
SELECT *
FROM [xx_xxxDB].[dbo].my_final_table nolock
),
T2 AS
(
SELECT
COUNT(1) TotalCount,
(COUNT(1) / @pageSize) + 1 TotalPage
FROM T
)
SELECT *
FROM T2, T
WHERE RowNo BETWEEN (@pagenumber - 1) * @pageSize + 1
AND @pagenumber * @pageSize;
END
由于我的数据有 5,700,000 行,所以我的页码将是 19(每页有 300,000 行)。我不确定我的存储过程是否会在此处运行 --many 临时表来合并部分?还是会经历最后一部分?谢谢;WITH T
答: 暂无答案
评论
IF
IF
nolock' table hint here, you are giving your table an alias of
nolock
-- many temp table here to merge
FROM T2, T
FROM T2 CROSS JOIN T
SELECT *, COUNT(1) OVER () TotalCount, COUNT(*) OVER () / @pageSize + 1 TotalPage FROM dbo.my_final_table