数据库中有一个表test
  ID   value   savetime
  101   1.1    2008-5-3 10:31:23 
  102   1.2    2008-5-3 10:31:36
  103   1.3    2008-5-3 10:42:21
  ................................
  101   1.3    2008-5-13 11:12:52
  102   1.3    2008-5-13 12:02:23
  ..................... 要求查询10天内的数据 编号为101的.表设置了按编号,存储时间索引,现在
  正常查询语句写为:select * from  test where savetime between '2008-5-3' and '2008-5-13'
 要把查询的结果形成报表,时间长了比较慢,请问如何加快查询?谢谢
  

解决方案 »

  1.   

    这个不是一个程序设计的问题,查询快慢最主要体现在表设计上,是不是符合范式都不是最重要的。
    好好的利用数据库本身的性能很重要,然后给出合理的SQL很主要。
      

  2.   

    是Sqlserver数据库 ,表主要是索引.
    程序执行太长时间的话,导致程序假面短暂死机.用户有时需要等待很长时间
      

  3.   

    sqlserver 不是很熟悉
    但select * from  test where savetime between '2008-5-3' and '2008-5-13' 
    是不是没用到索引,'2008-5-3' 和'2008-5-13' 是字符串,是不是savetime 这个字段被数据库转换成字符串再进行比较了,要是这样就用不到索引了
      

  4.   

    select * from  test where savetime >='2008-5-3' ;
      

  5.   

    sqlserver 不是很熟悉 
    但select * from  test where savetime between '2008-5-3' and '2008-5-13' 
    是不是没用到索引,'2008-5-3' 和'2008-5-13' 是字符串,是不是savetime 这个字段被数据库转换成字符串再进行比较了,要是这样就用不到索引了是什么意思,如果没有用到索引 该如何写?
      

  6.   

    你的那个字段正应该设成timestamp类型,
    你然后用select * from  test where savetime >2008-5-3 ;
    查询,