更新:我已修改代码以在插入之前删除索引,但这没有区别。
我被要求解决.Net / SqlServerCe应用程序的问题。具体而言,在针对db重复插入之后,性能变得越来越低。在一个实例中,在~200行,在另一个实例中,在~1000行。在后一种情况下,使用的代码如下所示:
Dim cm1 As System.Data.SqlServerCe.SqlCeCommand = cn1.CreateCommand
cm1.CommandText = "INSERT INTO Table1 Values(?,?,?,?,?,?,?,?,?,?,?,?,?)"
For j = 0 To ds.Tables(0).Rows.Count - 1 'this is 3110
For i = 0 To 12
cm1.Parameters(tbl(i, 0)).Value = Vals(j,i) 'values taken from a different db
Next
cm1.ExecuteNonQuery()
Next
具体细节并不是非常重要(比如'tbl'等),而是该代码是否应该用于处理此数量的插入,或者我正在目击的爬行是否可以预期。
答案 0 :(得分:1)
我会看看Table1上的索引。如果它被大量索引,那么随着索引中的页面填满,查询可能会变得更加昂贵。确保您没有过度索引,并且您的索引已正确设置。
同时检查您的查询以确保您没有通过保留引用来泄漏内存。根据我使用CE的经验,你应该尽快处理你得到的每个IDisposable对象,因为你没有像在现代PC上那样奢侈的演出和内存......记忆可以快速变得宝贵。
答案 1 :(得分:1)
插入是否在单个事务中执行?或者,连接使用的isolation_level是什么?广泛的锁定和阻塞可能会减慢速度。否则,查询看起来很简单。