所以我想问:在VB中能不能对VB中通过数据库联接返回的记录集进行再次嵌套的查询(select),就像在MSSQL中一样,可以对视图再次进行很多次的select?其实,执行一个view对应的时间是一个table的平方,再对若干个view再作view,时间是以指数级递增的,所以降低规模是必要的,用一些缓冲,临时表等方法,试试吧!

解决方案 »

  1.   

    我现在就是直接在表中查询,但是当中的算法是非常“复杂”的(这个复杂就是指循环嵌套循环太多)。所以查询速度非常慢,比在MSSQL中直接用视图select视图要慢10倍左右。连我自己都无法忍受,但是我想了好几天,也想不到更加好并且简单的算法。我现在比较忙,等晚上我会把详细的描述写在这里,大家可以帮我看看。谢谢你们的热情。
      

  2.   

    你可以在SQL中做一个触发器或存储过程
    当一天条件成立后将所需数据导入一张新建的表中
    这样你就可以节省很多的时间和精力
    我现在做的一个数据库也是这样
    每一个月汇总一遍数据将其导入到一个表中以备查询,效果很好
    你可以试试
      

  3.   

    倒,写存储过程阿,临时表是临时的,用完后自动会删除的,你何必担心?你这种开发其实根本是vb+access的开发方法,这样是不对的。sql server是支持select 套嵌的(access也支持,你也不会用吧?)。而且你可以在存储过程、视图、内嵌表函数之间选择,你却选择了 视图 的“套嵌”?
    如果一个视图能够被另外一个视图套嵌,那么就意味这这两个视图明明可以写到一个视图里面的(就是写成一句select语句),你何必写2个哪?而且还用alter来改参数,这种方法本身就是个大错误,性能下降是必然的。
      

  4.   

    我觉的如果全部写成把所有的嵌套视图写在一起,会影响可读性和可维护性。
    也许能用过CREATE function 来替换所有的“基本视图”和“高级视图”(既嵌套视图)。但是具体怎么实现呢?能给一个具体的代码吗?比如实现如下功能:
    视图1:create view view1 as select * from table1 where 条件(这个条件需要根据用户的条件来改变)
    视图2:create view view2 as select * from table2 where 条件(这个条件也需要根据用户的条件来改变)
    视图3:create view view3 as select view1.*,view2.* from view1 inner join view2 on view1.ID1=view2.ID2