2011-08-09 65 views
0

SQL中讀寫操作的性能有任何不同嗎?在ASP.NET MVC應用程序中使用Linq to SQL,我經常更新單個帖子中某個表格中的許多值(在此過程中,儘管用戶無法提交,但此類許多帖子將從用戶中快速進入新數據,直到前一次更新完成)。我目前的實現是循環輸入(每行的當前值列表),並將它們寫入字段(空值int)。我想知道是否會有任何性能差異,而不是我讀取當前的數據庫值,並且只有在它發生變化時才寫入。這些操作中的大多數會將行的值更改爲大約1/4到2/3行,其中一些更改更少,並且幾乎不會更改2/3以上的行。SQL讀取/寫入效率

我不太瞭解這些操作的比較速度(或者甚至有什麼區別)。這樣做有什麼好處嗎?如果是這樣,什麼樣的桌子尺寸會有利於最大/不利益,並且是否有任何百分比的排會發生變化,這將成爲這種改進的門檻?

+0

你爲什麼不測試它? –

回答

2

閱讀總是比較快。

寫其實始終是一個接着是

SQL需要知道要寫入哪一行,這涉及在查找或掃描操作中讀取索引或表本身,然後寫入適當的行。

寫入還需要更新任何適用的索引。根據具體情況,即使數據沒有變化,索引也可能會「更新」。

作爲一個非常普遍的規則,僅修改需要更改的數據是個好主意。

+0

謝謝!現在我可以提高速度並減少用戶的等待時間!很高興,互動性開始變得很差 – yoozer8

+2

+1:即使在純SQL中,有一個UPDATE包含代碼WHERE old_value <> new_value'較長,似乎有更多的「要做」,但通常會產生更好的性能。 – MatBailie