2014-01-18 65 views
0

我有一個實例,我們有一個主要記錄和幾個相關的表。在這種情況下,我們保留相關表中的所有歷史記錄。因此,在這種情況下,它看起來像這樣在這種情況下觸發器會更有效率嗎?

Main Table - Visits 
ID 
Date 
CurrentRoomHistoryID 
CurrentStatusHistoryID 

Related Table - RoomHistory 
ID 
Name 
StartDate 
EndDate 

Related Table - StatusHistory 
ID 
StatusID 
StartDate 
EndDate 

對於速度的緣故,你可以看到我們一直在主表中的當前房間和歷史的ID。現在,當任何一個更新時,我都會設置前一個房間或狀態記錄的結束日期,然後更新主表。

TRIGGER添加到上一條記錄的結束日期並更新主表會更快更有效嗎?

+2

「更高效」 - 比什麼? –

+0

比從應用程序運行單獨的查詢來更新狀態表和房間歷史表中的主表和相關記錄。 – Jhorra

+0

更重要的是:一個觸發器將永遠運行,所以也許更正確的地方是更新歷史 –

回答

0

我相信效率不會依賴於單獨的更新查詢或觸發器,因爲它取決於如何過濾要更新的記錄。事實上,無論你在更新查詢中有什麼要進入觸發器定義 - 可能會有一些小的改變。

就性能而言。您的ID字段應在所有3個表格中正確編制索引。

如果您正在更新正在更新或插入的當前記錄的某些內容,觸發器可能會更快。但是,由於您正在更新以前的房間或狀態數據,因此在觸發或更新查詢中查找和更新的時間會相同。

相關問題