小编Pau*_*aul的帖子

表值参数由于表扫描而导致性能降低

我有一个将参数传递给SQL中的过程的应用程序。参数之一是表值参数,其中包含要包含在where子句中的项目。

因为当我将TVP连接到具有200万行的表时,表值参数没有附加统计信息,所以查询速度非常慢。

我有什么选择?

同样,目标是将某些值传递给将包含在where子句中的过程:

从table1中选择*,其中id在其中(从@mytvp中选择id)

要么

从table1 t1中选择*在t1.id = tvp.id上加入@mytpv tvp

t-sql sql-server performance stored-procedures

6
推荐指数
1
解决办法
8172
查看次数

SQL Server中的分页

如何限制查询的结果(在我的情况下约为60K行)并仅从X行选择Y行?

如果我使用ROW_NUMBER()我不喜欢我的查询,因为它涉及2个选择查询..一个返回行,一个选择我需要的部分

更新:

这是我现在使用的查询:

SELECT  *
FROM    (
        SELECT  row_number() OVER (ORDER BY E.LastChangeDate DESC) AS row, E.*, U.[DisplayName] AS EntryCreatorDisplayName, U.[Email] AS EntryCreatorEmail
        FROM    entries e
        INNER JOIN
                users u
        ON      e.fk_user= u.id
        WHERE   e.EntryRank = 2
                AND u.Administrator = 1
        ) as TableWithRows
WHERE   (row >= 31 AND row <= 60)
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server pagination sql-server-2005

3
推荐指数
1
解决办法
378
查看次数