2014-03-03 356 views
0

每隔5秒我想插入10k行左右的表格。表是非標準化的,沒有主鍵或任何索引。我注意到插入性能非常慢--20秒內10k行,這是我無法接受的。SQL插入速度非常慢

在我的理解索引可以提高只搜索性能,但不插入。這是真的嗎?你有什麼建議可以提高性能嗎?

+0

10k行? Waaaat – HexCoder

+0

該表是否包含任何外鍵約束? – dav1dsm1th

+0

也只是爲了驗證它是否有任何插入觸發器? –

回答

1

你說得對,因爲索引不會改善插入性能(如果有的話可能會由於額外的開銷而傷害它)。

如果插入緩慢,可能是由於外部因素,例如運行SQL Server實例的硬件的IO性能,或者由於其他查詢而導致在數據庫或表級別爭用。您需要運行性能分析器來確定原因。

如果您按順序執行插入操作,則可能需要考慮執行bulk insert operation,而不是這樣做,它將具有更好的性能特徵。

最後,如果你每10秒鐘做一次10K的插入操作,你可能會考慮將NoSQL數據庫用於批量存儲,因爲它們對於這種類型的應用程序往往具有更好的性能特點,並頻繁寫入。

1

除了Miky的建議之外,您還可以通過減少varchar字段的長度,使用枚舉而不是文本等來提高優化db結構的性能。它也涉及到參照完整性,首先我認爲,你應該規範數據庫。然後,您可以繼續優化查詢。