我在用ADOQuery查询数据库表时,老是出现查询方面的错误
数据库是SQL Server 2000,表中的数据比较多,属于千万条数据的级别,现在暂时没有那么多,有将近1千万条,前期数据还没有全部录入,全部录入后大概有两三千万条,而且以后还会增多,每个月大约1百万条数据。
所以,最大最大的问题是:如何用ADOQuery查询时提高其查询的速度问题???
可以从SQL 语句的优化方面讲,也可以从ADOQuery本身的方面讲。
谢谢各位~~~~

解决方案 »

  1.   

    索引,分区表ADOQuery?只要返回的结果数据不多,都没什么好优化的了
      

  2.   

    对于ADOQuery,可以在以下几方面做优化:
    1.设置其CursorLocation属性为clUseServer,当打开数据查询时,不会把符合条件的数据全部读到存储器中,只有当需要的情况下才会再次读取一批数据,比如当显示的时候,一屏只显示了200条,而查询结果有1万条,那么打开数据集后可能会只从服务器取200条数据,用户使用滚动条向下滚动的时候会将需要显示的那部分读到内存中,这样就节省了网络传输、存储处理的时间。
      当然这种办法只有在查询结果数据量较大的情况下才会比较有效,如果查询结果只有百十来条数据甚至更少,那就显不出效果来的。
    2.优化查询语句和操作流程
      如果你的操作对象只是一条或某条记录,那么尽量在设置ADOQuery的SQL时候尽量使用Where语句来限制查询结果,尽量不使用类似于“select * from TableName”的语句,将查询结果取回来再使用类似Filter的条件过滤。
      如果你的操作对象太频繁,那么尽量将这些操作对象放在存储器中,以减少频繁读取和保存的次数和时间。
    对于数据库,可以根据情况建立索引,尽量使用聚簇索引,这种是最快的。
      

  3.   

    楼上几位说的都挺多的了。
    对于sqlserver的查询语句的优化可以利用sqlserver的工具看看执行计划,建立适合的必要的索引,因为索引如果建立的不好会影响到insert,update等操作。
    分区视图或分页显示也比较好。
      

  4.   

    我用的是SQL Server 2000 ,不是2005,2000好像还不能分区表吧??能不能告诉我怎么做??