对于一个有大量数据库的查询,有今日,近三天,近一周,近一个月,近三个月的查询。这样的查询方式,怎么样规划数据库,活用什么手段查询能够很快呢?

解决方案 »

  1.   

    看你用的什么数据库了, db2 9 和 oracle 11 都有逻辑分区的功能,可以把一个大表的数据按照一定的规则分成逻辑表,以提高查询效率。 如果不是这些数据库的话,只能自己硬去分表了,按照月份或者天数建立多张数据库表
      

  2.   

    mysql 用TO_DAYS,oracle 用 TOCHAR。。
      

  3.   

    把 时间 字段 设置为int,标记为从特定某一天到当前的天数。
    例如设1900.1.1为0,那么1900.1.2就为1。或者像System.currentTimeMillis()一样,以毫秒计算时间。
      

  4.   

    如果是SQLserver,就应该建立主外键,索引,用上视图,还加存储过程进行综合使用
      

  5.   

    首先感谢大家的建议。看大家的建议我想到一个方法不知道可行不可行。
    首先建立多个表如一周,一个月,3个月这样。
    然后在星期日,将一周的导入到一个月中。
    到了月底导入到3个月中。
    还有个疑问就是,存储过程和sql语句那个效率快呢。
    如果上面的方法用存储过程可以自动执行么?
    存储过程和sql总是有点糊涂。
      

  6.   

    存储过程和sql比较那个效率高呢
      

  7.   

    表1:当月数据  表2  历史数据(含本月及前2个月)  写个TRIGER表1插数据时给表2插 再来个JOB 定时删除表2中时间小于sysdate-2
    赚分当东西啊 累
      

  8.   

    存储过程也是执行sql吧。学习中。
      

  9.   

    对日期值建索引,如果有其它查询条件就要建复合索引,查询条件用 ? between ? and ?
      

  10.   

    如果是MSSQL 2000,建议用视图+索引
    如果是MSSQL 2005以上,可以用类似于Oracle的逻辑分区。
      

  11.   

    数据库基础知识即可,其实好的关系数据库设计不是书本上所具有的,是来自设计者的分析能力,对事物的属性、关系分析透彻才能有好的规划和设计。
    希望你能做出好的规划,加油!
                                                                                                  河南新华电脑学院
                                                                                                  www.hnxhdn.com
      

  12.   

    Oracle 中有这样类似的逻辑设计你查一下文档
      

  13.   

    <input type=button value=顶帖>