討論與同事的SQL性能,以及維護我們的操作數據存儲表的主題。我的同事(比我更有經驗的人)認爲,在數據更新發生時,刪除表,重新創建並插入其所有記錄比在表上執行標準DML操作更快。作爲我的懷疑論者,以及我以前的編程背景(在R中),似乎完全違揹我的直覺。Vanilla DML操作vs DROP,RECREATE,(RE)INSERT - 哪個更高效?
單個記錄大約是。 1.6 KB,分佈在約。 50列。記錄數量因業務流程而異,但表格的大小範圍很大,最小的記錄大約爲25000條記錄,最大的記錄大約爲25000000條記錄。典型的數據加載到ODS表格中,每個表格每天創建或修改0到500條記錄。
哪種選擇更好的性能,保持良好索引表,並使用香草DML操作(INSERT
,UPDATE
,DELETE
)與2個DML操作(DROP TABLE
,CREATE TABLE
)與單一INSERT
操作?
'...蔓延約。 50列......這不是數據庫表。這是一個電子表格! – joop
@joop的確如此。我聽到你,但我們無法控制這些ODS表的範圍。我們的源系統有一個特定的數據模型(EAV),我們透過這個模型創建ODS類表 - 因爲試圖對EAV數據模型進行操作報告是自殺。如果客戶端已經配置了一組數據以具有100個屬性,則該表將具有* k * + 100列,其中* k *是某個常數(如果我沒有記錯,則爲5)。 – Marley