我有一个表A,里面保存当前40天的内容。历史数据40天以前的移动到B表中去。现在是这样的,我要对整个表中查询一个任意起止时间段的
那么必然只能依靠VIEW来完成了。数据量大概一年就是120000条,数据量变不大
但是各种汇总调价比较复杂
但我平时一般查询的内容都应该在A表中,查询一个A表,大概要对该表进行
15次左右的不同条件的汇总,速度就慢在这里。
我想问的是,是减少查询数据量(比如我先从VIEW中把该段时间的数据全放入一个临时表中,在对该临时表操作,这样只要查询一次VIEW,数据全放入临时表中),还是根据起止时间段来判断,动态的传入A表或者VIEW更快。希望大家进来积极讨论一下子。我考虑的是,要么就对查询条件进行判断如果在A表没有进从VIEW中去到临时表中对临时表进行操作,反之有的话就从A表选择数据再放入临时表,
晕,讨论到最后还是要在程序方面用最复杂的办法来解决这个问题吗??
我就是不想程序写的太复杂了啊  毕竟对历史数据的查询要比最近的的次数要少。

解决方案 »

  1.   

    >>我考虑的是,要么就对查询条件进行判断如果在A表没有进从VIEW中去到临时表中对临时表进行操作,大哥~~默读10遍又我朗读了10遍,再手抄20遍,还是没理解上面的意思
      

  2.   

    jinjazz(近身剪(N-P攻略)) ( :
    啊,我的表达能力有问题??
    楼上兄弟没有看明白??就是要优化查询条件,减少查询的数据量,同时又必须考虑到任意时间段的情况
    就只能从VIEW中把数据放入一个临时表中再查询。rouqing(*柔情似水&冷酷到底&长发飘飘*) ( ) 信
    我的每一条记录都有日期字段
    你说的意思我没有明白,怎么搞啊
      

  3.   

    select * from saletb where datetime =... between ...
      

  4.   

    兄弟,你说的这个不能解决速度问题的啊
    saletb的表中数据大了以后,比如300W条,你查询的速度绝对要15分钟以上。
    如果需要扫描15次,汇总的话
      

  5.   

    你也可以用存储过程,用Table变量,先把时间段之内的数据写入table变量
    然后对这个变量进行15次扫描
      

  6.   

    jinjazz(近身剪(N-P攻略)) :
    兄弟说的就是我想的,先把数据移动到一个临时表中去,我当然是写的存储过程了。我试了一下,速度有非常明显的提升,原来直接扫描VIEW,15次,需要花费11分钟左右
    并且经常报超时错误,现在只需要46秒,最少花费(只查询一天的数据)
    最多花费2分32秒(查询表中所有数据,35W左右。)基本上能够接受这个速度了。
    我的问题也得到了解决。只是我想,如果别的系统数据量更大,对响应时间要求更高,有什么好办法处理??
    我能想到的就是减少移动的数据量。