gpt4 book ai didi

sql - 在sql查询中保存记录过滤条件

转载 作者:搜寻专家 更新时间:2023-10-30 20:31:08 24 4
gpt4 key购买 nike

我希望能够在数据库中存储记录过滤条件(基本上是 SELECT 查询中 WHERE 之后的内容),我想稍后在 SELECT 中使用该条件。场景是用户(很少)设置过滤条件,并且每次(经常)检索数据记录时都会使用此条件。

过滤条件是一个 bool 表达式,例如:(x AND y) OR z。 x、y 和 z 是可以使用连接表连接到数据记录的关键字。

我可以将表达式存储为 text/xml 然后解析它并在每次我想检索数据时动态构造一个 sql 查询,但这似乎效率低下。

有没有更好的办法?

最佳答案

如果您的列选择是静态的,则可以从该查询创建一个 StoredProcedure 并将 StoredProcedure 名称存储到某个“QueryMaster”表中。这样您就可以将动态查询限制为 Exec SP_EXECUTESQL <SP_NAME> <Params>并为您的主要选择获得编译查询的好处。

您可以 Avoid Conversions In Execution Plans By Using sp_executesql Instead of Exec .

如果您的列选择也不是静态的,您可能希望创建 View 而不是存储过程。仅当您的主表很大或使用大量联接时,这可能会更好。

这是假设您有大量可能的过滤条件和少量的实际过滤条件。例如,用户可以过滤 100 列 - 但他们可能会创建 25-30 种这样的组合并继续使用它。

如果要过滤的列数有限,更好的方法是使用 Case 创建一个通用 where 子句, IsNull , Collace等。参见 Implementing Dynamic WHERE-Clause in Static SQL举几个例子。

关于sql - 在sql查询中保存记录过滤条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6935217/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com