我在用ADOQuery查询数据库表时,老是出现查询方面的错误
数据库是SQL Server 2000,表中的数据比较多,属于千万条数据的级别,现在暂时没有那么多,有将近1千万条,前期数据还没有全部录入,全部录入后大概有两三千万条,而且以后还会增多,每个月大约1百万条数据。
所以,最大最大的问题是:如何用ADOQuery查询时提高其查询的速度问题???
可以从SQL 语句的优化方面讲,也可以从ADOQuery本身的方面讲。
谢谢各位~~~~
数据库是SQL Server 2000,表中的数据比较多,属于千万条数据的级别,现在暂时没有那么多,有将近1千万条,前期数据还没有全部录入,全部录入后大概有两三千万条,而且以后还会增多,每个月大约1百万条数据。
所以,最大最大的问题是:如何用ADOQuery查询时提高其查询的速度问题???
可以从SQL 语句的优化方面讲,也可以从ADOQuery本身的方面讲。
谢谢各位~~~~
1.设置其CursorLocation属性为clUseServer,当打开数据查询时,不会把符合条件的数据全部读到存储器中,只有当需要的情况下才会再次读取一批数据,比如当显示的时候,一屏只显示了200条,而查询结果有1万条,那么打开数据集后可能会只从服务器取200条数据,用户使用滚动条向下滚动的时候会将需要显示的那部分读到内存中,这样就节省了网络传输、存储处理的时间。
当然这种办法只有在查询结果数据量较大的情况下才会比较有效,如果查询结果只有百十来条数据甚至更少,那就显不出效果来的。
2.优化查询语句和操作流程
如果你的操作对象只是一条或某条记录,那么尽量在设置ADOQuery的SQL时候尽量使用Where语句来限制查询结果,尽量不使用类似于“select * from TableName”的语句,将查询结果取回来再使用类似Filter的条件过滤。
如果你的操作对象太频繁,那么尽量将这些操作对象放在存储器中,以减少频繁读取和保存的次数和时间。
对于数据库,可以根据情况建立索引,尽量使用聚簇索引,这种是最快的。
对于sqlserver的查询语句的优化可以利用sqlserver的工具看看执行计划,建立适合的必要的索引,因为索引如果建立的不好会影响到insert,update等操作。
分区视图或分页显示也比较好。