ERP和大型数据库应用,无疑都需要存取各种不同的数据并根据这些数据进行运算。而直接通过ADO进行数据库方面的开发成为开发人员的首选。
ADO
是
Microsoft
存取通用数据源的标准引擎,
ADO
主要是让应用程序或
Web
应用程序存取各种不同的数据源。
ADO
封装了
OLE-DB
复杂的接口,以极为简单的
COM
接口存取数据。Delphi中有经过进一步的封装,使其更灵活的使用和开发。 然而大多数程序开发人员的都会遇到下面的情况:Next方法性能比较差,尤其大量的数据,调用Next,越到最后速度越慢。
通过分析ADO的VCL代码,主要是DB.pas和AdoDB.pas发现问题出现在InternalGetRecord函数本身,如果将RecordNumber := Recordset.AbsolutePosition;去掉发现效率明显的提高。
解决办法是:
1.自己封装原生ADO
2.在现有的代码基础上设置ADODataSet或ADOQuery的DisableControls属性
通过分析ADO的VCL代码,主要是DB.pas和AdoDB.pas发现问题出现在InternalGetRecord函数本身,如果将RecordNumber := Recordset.AbsolutePosition;去掉发现效率明显的提高。
解决办法是:
1.自己封装原生ADO
2.在现有的代码基础上设置ADODataSet或ADOQuery的DisableControls属性