以Primary Key為where條件,去Select資料,速度很快...
但同樣以Primary Key為條件,去Delete卻非常的久.
查看執行計畫,發現除了這個Table本身之外,還有其它的Table有table-scan或index-scan.
剛開始有點奇怪,Delete怎麼會去scan其它的Table!?
後來才發現這個table有被其它Table reference到,
也就是這個Table的Primary Key,是其它table的Froeign key.
所以當Delete的時候,系統會去它的外鍵Table檢查是否符合Foreign key的限制。
解決方法:
1. exec sp_fkeys @pktable_name = N'your_table_name' ,查詢這個Table的Foreign keys
2. 外鍵Table的Foreign key,建立index,加快外鍵的搜尋速度.
沒有留言:
張貼留言