一般来说,一条复杂的SQL执行的效率相比于若干条与之等价的简单SQL语句来说,那一个更快一点可以完成操作?问得有点抽象,愿意回答的可以分情况讨论一下,有例子更好.分不够可以另外开贴给.

解决方案 »

  1.   

    如果两种情况算法是等价的,那么一条更快,一是可能做更多优化,二是执行时更连续,可以更好的利用cache
    如果某种外部逻辑可以较大简化业务,那么应该分开。
    回答的有点抽象
      

  2.   

    如果两种情况算法是等价的,那么一条更快,一是可能做更多优化,二是执行时更连续,可以更好的利用cache
    如果某种外部逻辑可以较大简化业务,那么应该分开。
    回答的有点抽象
      

  3.   

    我说的具体一些,我所说的复杂主要是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%是会涉及到多个数据表的