实际上这是一个简单的问题,但我缺乏经验,知道数据库系统的内部优化(一般来说,但在我的具体情况下是T-SQL)。
假设我有一个包含整数数据字段的数据库(为简化1-3):
table Data (D1, D2, D3)
我有一系列匹配标准:
D1 > 3 D2 < 100 D3 all
D1 >= 50 D2 all D3 > 50
and so on...
执行查询的天真方式是AND
标准的每个表达式OR
每个条件表达式。但显然优化的查询是 (参见编辑)D1 >= 50 and D2 < 100 and D3 > 50
所以这是问题:数据库(在我的情况下是T-SQL)是否能够优化我的天真查询?
如果不是:有人能指出我正确的方向(我确定必须有一些算法,我无法弄清楚)。
编辑:
显然,优化假设是错误的:-D
D1 >= 50 D2 < 100 D3 all
D1 >= 50 D2 all D3 > 50
and so on...
这个可以从中优化
D1 >= 50 and D2 < 100 or D1 >= 50 and D3 > 50
到
D1 >= 50 and (D2 < 100 or D3 = 50
)
不知怎的,我假设一个数据库应该是那么聪明(如果我想到复杂的查询会变成多么复杂的数据库)。
问题应该是:它可以处理多少标准(X数据字段和Y标准)。但这是我必须弄清楚的事情。我会在这里收集一些日期时报告(可能需要一段时间)。
答案 0 :(得分:0)
由于没有真正的答案,我会回答我自己的问题,提供反馈意见 (如果有人愿意为此做出贡献,我仍然很高兴。)
原始问题暗示了一个表格,其中包含适用于该数据的数据和一系列标准。在进一步的分析中,我面对这样一个事实:这个想法背后的整个概念是如此复杂,以至于我们不能依赖于在单独的表中保存这个标准(原因:当你试图在没有清晰的编程库的情况下处理它时,动态API和纯混乱) )。
因此它最终在动态SQL中(而不是连接,存储过程等)。幸运的是,我可以通过先前的限制来减少查询数据,这将减少大量数据,这些数据仍然需要使用标准进行查询。我甚至没有看到应用(例如)100个标准的问题,每个标准都有10个规则。我仍然担心数据库可以在短时间内处理多少这样的查询(除了常见的工作负载)而不会爆炸。
尽管如此,对于我来说,作为开发者“挣扎”的一个非常简洁的要求。如果有更多要说明的话,我会报告回来......