1
4
我个人使用的是两种查询方法,是的,您必须在两个地方维护搜索逻辑,但我发现性能优化的好处是,代码的整体清洁最终会得到回报。 使用传递给单个过程的标志是一个潜在的解决方案,但我发现这很难维护,特别是对于复杂的搜索逻辑。 使用临时表等的路径,这只会增加比所需开销更多的开销。 因此,为什么我使用了两个查询方法。我在网上找到的所有东西都推荐这种方法。 |
2
2
这不是一个正常的问题,您通常希望在获取页面的同时获得总计数。 也就是说,使用两种不同的程序。原因是你有两个非常不同的行动,只是表面上彼此相似。 |
3
2
我相信您已经考虑过了:如果数据正在更改计数,任何后续的实际分页都可能不同(如果添加/删除了行) 您可以有一个用户定义的函数,该函数返回匹配行的pks,相对容易执行 SELECT COUNT(*) FROM dbo.MyQueryFunction(@Param1, @Param2) 去数数,然后 SELECT Col1, Col2, ... FROM dbo.MyQueryFunction(@Param1, @Param2) AS FN JOIN dbo.MyTable AS T ON T.ID = FN.ID ... more JOINs ... 获取数据。 不知道它在后续分页中与行编号的关系有多好,但它将保留myqueryfunction中包含的实际“查询逻辑”-您仍然可以在存储过程和函数中检索任何列的所有联接。 |
4
1
|
5
1
我发现这个线程在研究其他的东西,我想我会提到有可能用一个查询返回结果集和记录计数。您只需要一个“out”参数来携带该值。下面是一个Oracle示例的复制/粘贴,但是对于SQL Server来说,这项技术非常类似(我没有访问SQL Server ATM的权限)。 对于SQL Server,最重要的是您可能需要使用row_number()和rownum。
|
6
0
我知道这是一个旧问题(已经标记好了),但是您可以返回一个记录集(也就是结果),并有一个输出(或者多个输出)值,这意味着您只需要一次到数据库的往返行程。 这是我在想的事情(现在已经过了我的睡觉时间…)
Hth. |
Rogue258 · 在DB2SQL中使用存储过程/宏进行声明和循环 2 年前 |
Moyura · 如何从存储过程中获取最高值 2 年前 |
muhtarkator · 创建存储过程插入和更新 2 年前 |
DRUIDRUID · 执行SP时从表中获取值 6 年前 |
user416 · oracle中的组存储过程 6 年前 |