2013-08-19 36 views
2

在我的項目(在JAVA)我必須從數據庫中選擇一些數據。如果數據不存在,我將它插入並再次選擇它。我做了兩個測試:MSSQL選擇填充比空錶快

1.從空表中選擇SELECT INSERT-SELECT數據(150 000行)。
2.從表中填充5千個垃圾(未使用)行的SELECT-INSERT-SELECT數據(150 000行)。

而在結果中,我看到第二個案例速度提高了15%到25%。
有人可以解釋爲什麼嗎?

+0

我認爲這是磁盤緩存。嘗試執行'DBCC DROPCLEANBUFFERS; DBCC FREEPROCCACHE;'並再次檢查您的測量結果。 – Devart

回答

0

你查詢同一個表或兩個不同的表在上述兩種情況?

如果它們是不同的表,我懷疑第二個表有列索引,而第一個表沒有。

+0

同一張表。 – zdolniacha