Select语句,有一个表单A,里面字段不是很多,1个datetime的,然后后面的都是float类型,大概一共有20个float的字段,日积月累,往这个A表单添加记录,当这个A表单里面的记录很庞大的时候,我就发现进行查询操作就比较费时了,求各位大大能给我一个好的建议,这问题之前我也问过,不过没有得到很好的解决方法。是否需要将A表单进行分解,但又涉及到数据的连续性,我查询起来又很麻烦,所以这个问题请大家能帮忙想一下解决的办法。
实在是查询起来很慢,例如简单的select Data1 from A where DTime between ×××× and ×××× order by Dtime Desc。当记录有上万条的时候,那个速度简直是牛×。

解决方案 »

  1.   

    小弟对SQL不是很熟,只是用到一点功能而已,望大家能给点意见,平时用SQL主要是添加字段,查询,运算等等,但是比较深入的了解它还是不够。真是书到用时方恨少啊
      

  2.   


    用 Sql Server 数据库系统,应该好一点吧,所以还是的熟悉一下 Sql Server 2005,或2008,或者 DB2,Oracle,里面的功能很多,可以写成一个存储过程,或者事务,触发器什么的
      

  3.   

    分成两个表,一个保存基本信息,一个保存变动明细,然后使用连接查询,比如:
    SELECT A.姓名,ISNULL(B.本月工资,A.基本工资) 本月工资
    FROM 基本信息 A
    LEFT JOIN (SELECT TOP 1 * FROM 工资变动明细 WHERE 统计日期 BETWEEN XXX AND XXX ORDER BY 统计日期 DESC) B
    ON B.员工编号=A.员工编号
    如果想完整地显示某一时间段内的信息,则使用右连接,比如:
    SELECT A.姓名,B.本月工资
    FROM 基本信息 A
    RIGHT JOIN (SELECT TOP 1 * FROM 工资变动明细 WHERE 统计日期 BETWEEN XXX AND XXX ORDER BY 统计日期 DESC) B
    ON B.员工编号=A.员工编号
      

  4.   

    如果是ACCESS数据库,给表增加一个自动编号字段,设置索引为“有”
    之后再试试,,几万条数据,会很快
      

  5.   

    pls create index on the DTime 
      

  6.   

    索引
    存储过程最好对Order BY 字段 加上 索引 做优化
      

  7.   

    1万条的记录查询都很慢,说明你肯定没有建索引,所以每次查询时都会导致全表扫描,速度当然慢,索引建立的合理,查询的方法也符合索上要求,不要说1万条,就是1000万,也可以很快完成根据你的那个查询,应该在 DTime 列上建索引
      

  8.   

    1)给字段 DTime 创建索引
    2)用 (DTTime >= ××××) AND (DTime <= ××××) 代替 DTime between ×××× and ××××