我说的具体一些,我所说的复杂主要是WHERE条件的复杂.我目前关心的一类SQL语句的WHERE条件具有如下的形式:WHERE A1 OR A2 OR A3 ... OR An,其中A1,A2,...An都是一个独立的表达式.Ai有可能是一个简单的判断,比如Table.Field > 10这样的,但是更多的情况是Ai本身是由每项为合取式组成的析取表达式,比如: Ai = (B1 AND B2 AND B3...Bn OR C1 AND C2 AND C3 ... Cn ...) 从逻辑的等价来说Ai外面的括号是可以去掉的,但是出于某些原因这个括号不能去掉,这个问题不用讨论。对于Bi和Ci可以保证是一个简单的判断但是有可能是一个嵌套的SELECT语句。当然嵌套的SELECT语句中的WHERE条件具有相同的形式。好了我的问题是将这个条件写在一个SQL语句中执行效率高,还是将其分为若干个SQL语句执行的效率高。比如: WHERE A1 OR A2 OR A3 ... OR An可以被分到以下若干条SQL语句中: ... WHERE A1 ... WHERE A2 ... ... ... ... WHERE An其结果应该是等价的,那么哪一种的效率高呢?补充一点WHERE中的条件100%是会涉及到多个数据表的
如果某种外部逻辑可以较大简化业务,那么应该分开。
回答的有点抽象
如果某种外部逻辑可以较大简化业务,那么应该分开。
回答的有点抽象
Ai = (B1 AND B2 AND B3...Bn OR C1 AND C2 AND C3 ... Cn ...)
从逻辑的等价来说Ai外面的括号是可以去掉的,但是出于某些原因这个括号不能去掉,这个问题不用讨论。对于Bi和Ci可以保证是一个简单的判断但是有可能是一个嵌套的SELECT语句。当然嵌套的SELECT语句中的WHERE条件具有相同的形式。好了我的问题是将这个条件写在一个SQL语句中执行效率高,还是将其分为若干个SQL语句执行的效率高。比如:
WHERE A1 OR A2 OR A3 ... OR An可以被分到以下若干条SQL语句中:
... WHERE A1
... WHERE A2
... ... ...
... WHERE An其结果应该是等价的,那么哪一种的效率高呢?补充一点WHERE中的条件100%是会涉及到多个数据表的