MSSQL WITH(NOLOCK)

有時在查比較複雜的SQL時會發生效能不佳的況狀,一般都想到加Index,其實也可以用WITH(NOLOCK)來忽略檢查Table資料是否在Transction中。

SELECT *
FROM table WITH(NOLOCK)

這語法可以降低Table Lock問題,但也有要注意的地方。因為他忽略不檢查資料是否在Transaction中,所以不管資料是否還沒commit或rollbak,均會被讀取到,也就是Dirty Read。使用時要看這結果是否會影響資料結果。



Reference Web:
http://blog.xuite.net/linriva/blog/39534686-%5BT-SQL%5D+WITH+(NOLOCK)%3A+%E6%8F%90%E5%8D%87%E6%9F%A5%E8%A9%A2%E6%95%88%E7%8E%87%E5%92%8C%E9%81%BF%E5%85%8DLOCK%E7%99%BC%E7%94%9F+(%E9%98%B2%E6%AD%A2%E8%B3%87%E6%96%99%E9%81%B8%E5%8F%96%E6%99%82%E8%A2%AB%E9%8E%96%E6%AD%BB)--%E8%BD%89%E8%B2%BC

留言

這個網誌中的熱門文章

ORA-12514: TNS: 監聽器目前不知道連線描述區中要求的服務

Oracle 例外控制(Exception Control)

Oracle 工作排程 DBMS_JOB 筆記