查询冗余和优化的位置

时间:2013-09-05 18:30:06

标签: database tsql query-optimization

实际上这是一个简单的问题,但我缺乏经验,知道数据库系统的内部优化(一般来说,但在我的具体情况下是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标准)。但这是我必须弄清楚的事情。我会在这里收集一些日期时报告(可能需要一段时间)。

1 个答案:

答案 0 :(得分:0)

由于没有真正的答案,我会回答我自己的问题,提供反馈意见 (如果有人愿意为此做出贡献,我仍然很高兴。)

原始问题暗示了一个表格,其中包含适用于该数据的数据和一系列标准。在进一步的分析中,我面对这样一个事实:这个想法背后的整个概念是如此复杂,以至于我们不能依赖于在单独的表中保存这个标准(原因:当你试图在没有清晰的编程库的情况下处理它时,动态API和纯混乱) )。

因此它最终在动态SQL中(而不是连接,存储过程等)。幸运的是,我可以通过先前的限制来减少查询数据,这将减少大量数据,这些数据仍然需要使用标准进行查询。我甚至没有看到应用(例如)100个标准的问题,每个标准都有10个规则。我仍然担心数据库可以在短时间内处理多少这样的查询(除了常见的工作负载)而不会爆炸。

尽管如此,对于我来说,作为开发者“挣扎”的一个非常简洁的要求。如果有更多要说明的话,我会报告回来......