我用的是Interbase的数据库,用的是Delphi开发,SQL用的是内嵌的语句
每次统计的时候:
数据源中的数据大概有3000多条
用于显示报表的临时表的行一般有200(代表生产厂家),列一般有20(代表分布地区)结果每次统计都要大概2到3分钟
这样的时间是不是太长了啊
请问怎么样可以缩短啊希望您的帮助,必给分

解决方案 »

  1.   

    我没用interbase数据库,不知道该数据库有没有存储过程,如果有的话用存储过程就可以解决。
      

  2.   

    不知道你做什么样的统计,不过看起来数据量不算大.最好用存储过程实现.现在是SQL语句优化的问题了.
      

  3.   

    大侠是说SQL语句不需要优化了,只要做个存储过程就行了吗?
    您觉得我上面的举的例子里的统计时间是不是太长了啊
    相同的SQL要做200*20(行*列)次进行统计,但我也没办法减少做存储过程的话存不存在打包的问题呢
    最好要有利于打包,要不我不是要挨个去装服务器端的配置啊
      

  4.   

    相同SQL的使用次数     记录数       时间
        152*18             3000       64 Seconds
        360*18             3000      130 Seconds
        360*18             3000      220 Seconds我做的是统计报表不是查,一共有三种报表,分别如上述所述。
    这样的速度到底慢不慢啊,我是在本地运行的,我没做存储过程,全部用的是内嵌的SQL语句。请问楼上的说的是什么意思啊?
    各位大侠能不能说的具体一点啊,我是菜鸟啊
      

  5.   

    相同SQL的使用次数     记录数       时间
        152*18             3000       64 Seconds
        360*18             3000      130 Seconds
        360*18             3000      220 Seconds这是什么意思?
     
    你再具体点,表怎么设计的,SQL语句怎么写的,想怎么显示报表?
      

  6.   

    我要显示报表,所以先建一个临时库,临时库的字段根据“分公司”的数量来顶,现在由于有18个分公司,所以临时表中有18列
    临时表的记录数根据设备制造商的数量来定,目前设备制造商的数量为360个也就是说有360个制造商就应该有360个记录在临时表里生成,而每条记录都分别要对18个不同分公司中来自本制造商设备数量进行统计,也就是说一条记录,相同的SQL语句就要运行18次一共有360条记录,所以一共运行360*18次相同的SQL语句而每条SQL语句查询的内容都是来自SB表中,这个表中大概有3000条数据就是这么个情况,其实我的SQL查询还分成两种,一种SQL查询的条件部分是 d_a1 = '***' ,这种由于直接用等号做条件所以很快,也就是上面130Seconds 的那种情况;另一种SQL查询是 d_A1 <> '***',这种查询由于使用了不等号,所以就慢了很多,对应220Seconds的那种情况;请指教啊,谢谢了