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毫秒,但這對我來說似乎仍然很慢......或者這是正常的嗎? –