简单来说,程序复杂了,SQL查询也很容易复杂起来,很可能到取数据会和4,5甚至更多表有关系,
这样不仅SQL会复杂,而且维护,调整,和其它处理都会比较复杂。
一般的优化方法就是优化 SQL, 不知道有没有其它更方便的办法?
我表达不怎么好,举个例子吧:
  假如我最终要的是一个用户列表:
    
      名字, 当前工资    <<   <  1 2 3  > >>   1, 有一个用户表,user ( id,name)
   2,   有基本工资表 , salary (user_id ,date,price)  当前工资是只本月1号到目前的工资,所以为了计算当前工资,需要从   工资表  中计算迄今为止的工资总额,
   子查询就可以完成。 但是假如更复杂些, 工资分为  基本工资,奖金,罚款,加班报酬,报销 ,每个表都和 工资表 类似结构, 另外再增加些变态规则:
   1, 基本工资 > 平均值 x2 的部分没收
   2, 报销不能超过 基本工资+奖金+加班报酬 的 20%
   3, 税收需要按照基本工资的级别来扣除 ( <1000 ,10%, < 2000 14%, < 3000 %23  >= 3000  30%)
   4,   税收还要扣除奖金的 10% 
   5, 按最近工资倒序排列
   6, 只列出基本工资 在 2000  - 5000 的人
    .
    .  相信这样再单纯用一条语句就不太可能了,但是要分多条语句的话,还要考虑分页,
在这类十分复杂的情况下,有哪些办法可以优化呢, (不包括硬件,架构,仅考虑 SQL 和程序)

解决方案 »

  1.   

    从数据库中取数据的时候,有时候需要一些额外的逻辑判断,这些判断虽然可以用SQL完成,
    但是会语句会比较长,也比较复杂,
    我意思是是否可以通过程序上做一定处理,简化最终的SQL 查询?
      

  2.   

    如果你是程序员  如果你想提高效率  那么请远离关联查询 更要远离SQL函数
    任何的关联查询都可以用多个简单查询完成 然后由程序组合返回的结果集 
    在4 5张表以上的多表关联查询 如果表都很大(也不用太大,几十万)效率就变的很低了 而且优化的余地很小
    其实程序员对数据库的操作就是最简单的增删改查  虽然用了关联查询或者复杂的子查询 函数等等会使程序逻辑变得简单  但大家知道 优化程序远远要比优化数据库简单的多 而且维护程序也要比维护数据库简单的多 所以尽最大可能使数据库操作简单