现在有个主要的表A,剩下的几十个表都是和A外键相关的。我需要一个展示:把A表中和id=某的记录相关的所有信息展示出来。
这些所有信息是这样得到的,假如id=1,那么就把B中关联所有id=1的统计一下有几条,C中关联所有id=1的统计一下有几条大约统计到八十次。
展示列如下id name sumB sumC sumD   
我的解决办法如下:
1 建立统计表T(80个字段),每当A中插入数据就往T中插入一条记录,除了id name都设为0.剩下的表更改的时候出发T的更改
2 建立统计表T(4个字段 分别为 id name sum type)这样每当A中插入数据时就往T中插入80条记录(用type标记是哪种统计)剩下的表更改的时候出发T的更改
3 建立视图:视图的每个字段定义为对某表的统计请问,我改用哪种方法呢?各自的优缺点是什么?
 另外看到有的帖子说是用存储过程,不甚懂,请赐教。

解决方案 »

  1.   

    你用视图吧,如果表中数据没有变化,视图查询一次就能反复使用。并没有额外开销。
      

  2.   

    如果用视图的话,要关联查询好几十张表,速度会不会很慢?
      

  3.   


    第一次会慢,以后如果表没有数据变化就不会影响速度。
      

  4.   

    但是我这个视图的数据是不断发生变化的。
      

  5.   

    存储过程也是数据库语句构成的,不难!
      

  6.   

    第一个靠谱,数据量大时效率高!
      

  7.   

    存储过程倒是会写,但是纠结于哪种效率好,安全性高的问题。我看了个帖子说存储过程是预编译的,效率会高。但是不明白,为什么预编译后查询数据会快。
      

  8.   


    存储过程效率高是指:执行存储过程时,编译好的查询计划会在内存中缓存。下一次调用此存储过程,可以直接使用缓存中的查询计划,不需要重新编译存储过程,所以效率高。
    类似于应用程序参数化调用的好处。
      

  9.   

    存储过程还有个作用就是节约网络流量!
      

  10.   

    像你这种复杂的查询,不推荐用视图。视图最后还是要回归到对表的查询上,如果你构建视图的语句本身就很复杂,那么就会导致编译成对表查询语句的复杂,会极大的降低性能。
    我个人推荐你写一个存储过程来实现,即可以设置为自动作业按时执行,也可以根据需要随时执行。
      

  11.   

    建议方案三使用视图.
    你的逻辑并不复杂,计算量也不大,不需要额外开销.
      

  12.   

    推荐方案1或者过程,方案1的好处是查询开销很小,但是在子表每次数据更新时,需要更新统计表,不过这个开销也很小可以忽略不计。不推荐视图,联接的表太多了,即使数据量不大也会很慢