执行超时已过期

问题描述 投票:0回答:1

我的 .NET Framework API 项目有 9-10 个 API。这些 API 遇到以下错误。

执行超时已过期。操作完成之前超时时间已过,或者服务器没有响应。

我不知道这个错误的原因是什么。主要可能是由于 SQL Server 查询正在处理具有超过 100000 条记录和 191 列的表。这是我的主要怀疑。

执行 SQL 查询时出现上述错误。

sql-server azure server
1个回答
0
投票

您是否希望选择 id2 值与该表中第二个不同 Id2 值匹配的行?

如果是这样,您需要对不同的 id2 值进行隔离和编号,过滤行号 2,然后将该连接连接回原始表。

SELECT A.*
FROM (
    SELECT Id2, ROW_NUMBER() OVER(ORDER BY Id2) AS rn
    FROM TableA
    GROUP BY Id2
) S
JOIN TableA A ON A.Id2 = S.Id2
WHERE S.rn = 2

上面将选择匹配

Id2 = 4
的行。

或者,将 Id2 选择器包装在子查询中,然后在 where 子句中使用该子查询。

SELECT A.*
FROM TableA A
WHERE A.Id2 = (
    SELECT S.Id2
    FROM (
        SELECT Id2, ROW_NUMBER() OVER(ORDER BY Id2) AS rn
        FROM TableA
        GROUP BY Id2
    ) S
    WHERE S.rn = 2
)

以上两项的结果:

Id1 Id2 Id3 姓名 日期
3 4 4A 测试D 2024-04-06
3 4 4A 测试E 2024-04-07
4 4 4A 测试D 2024-04-06
4 4 4A 测试E 2024-04-07

请参阅 此数据库<>fiddle 进行演示

© www.soinside.com 2019 - 2024. All rights reserved.