我正在使用 SQL Server CE 4.0 并且DELETE
查询性能很差。
我的表中有 300,000 行。
我的查询是:
DELETE from tableX
where columnName1 = '<some text>' AND columnName2 = '<some other text>'
我在 2 个字段 columnName1 和 columnName2 上使用非聚集索引。
我注意到当要删除的行数很少(比如 < 2000)时,索引可以将性能提高 2-3 倍。但是,当要删除的行数较大(例如 > 15000)时,索引根本没有帮助。
我对这种行为的理论是,当行数很大时,索引维护正在扼杀使用索引(索引查找而不是表扫描)所获得的收益。这个对吗?
不幸的是,我无法摆脱索引,因为它显着有助于非变异查询性能。
此外,我还能做些什么来提高 > 15,000 行案例的删除性能?
我在 Windows 7(32 位)上使用 SQL Server CE 4.0。
我的应用程序是用 C++ 编写的,并使用 OLE DB 接口来操作数据库。