1
我有一个表PartNumbers
,它有10列,混合数据类型和超过100,000行。SQL Server CE读取速度慢(1000行是36秒?)
这里是我的测试:
我已经提上了ID列的索引:
CREATE UNIQUE INDEX IndexName ON [PartNumbers] (ID)
我得到随机选择的ID(Random_ID_List
)和遍历每个ID为1000的列表,以获取从表中描述:
Dim Stop_Watch As New Stopwatch
Stop_Watch.Start()
Dim Results As New List(Of String)
LocalDB.SQLCe_Connection.Open()
For Each ID As Integer In Random_ID_List
Dim sqlcmd = LocalDB.SQLCe_Connection.CreateCommand()
sqlcmd.CommandText = "SELECT Description FROM PartNumbers WHERE ID = " & ID
Results.Add(sqlcmd.ExecuteScalar)
Next
LocalDB.SQLCe_Connection.Close()
Stop_Watch.Stop()
Dim Result_Time As Long = Stop_Watch.ElapsedMilliseconds
我的结果是:
- Result_Time = 36283毫秒(36秒)
这是正常的?
每个查询36ms。不可笑。尝试使用预处理语句,和/或通过'in'而不是'='减少查询次数。 – Blorgbeard
尝试'SELECT ID,描述FRO PartNumbers WHERE ID IN(...这里的ID列表...)'您正在进行索引搜索1000次。 –
@EricJ。这将它降低到2377毫秒,但这对我来说似乎仍然很慢......或者这是正常的吗? –