数万条记录的表,按需要Locate的列索引,用TQuery打开并按该列排序,打开很快,但第一次Locate某条记录时非常慢,第二次很快,为什么?有解决的办法吗?

解决方案 »

  1.   

    hehe ,看来你对locate的机理还不清楚.当使用locate,bde会将所有的数据获取到客户端,然后在本地进行查找,所以跟你是否在数据库中使用了索引没有关系,速度慢在数据的传输.第二次locate时,由于数据已经在客户端了,所有bde在本地查找,数据当然很快.同locate相同原来的还有filter. 所有在使用locate和filter时要特别小心,当数据量很大时会很慢.解决方法.
    不要使用locate,直接写sql语句去数据库获取数据.
      

  2.   

    同意楼上的说法,用SQL语句,再复杂点儿的就用存储过程.........
      

  3.   

    Tquery中不要把所有记录都打开,可以select top 500 * ...
    locate记录的时候重新用sql语句查询
      

  4.   

    谢谢各位,道理我是明白了,但问题还是没有解决。后来我改用在程序动态生成SQL语句(用到like关键字),来查找匹配的记录,还是非常慢,但我在SQL Explorer中用同样的语句测试,非常快,为什么?如何解决?另外,因为只有一条语句,所以不想用存储过程。
      

  5.   

    是啊,有时用SQL Explorer或别的类似软件运行SQL比在程序中快些,为什么??
      

  6.   

    贴出你写的sql语句,一般不会慢的,
      

  7.   

    同意楼上的说法,用SQL语句,.........