2015-03-13 73 views
0

我們擁有大約800個表以及大量使用組合鍵的程序和函數之間的數據庫。 現在的問題是:你會改變,片後,表和所有的程序/函數使用代理鍵複合鍵? 感謝您的任何建議。使用代理鍵重構數據庫

原因是:檢索數據緩慢,重建索引速度緩慢。但我不確定這些是否是一個很好的理由...

+1

我不會改變什麼,不知道爲什麼。所以爲什麼? – 2015-03-13 15:08:33

+0

我在帖子中正確地添加了原因:) – SimoneG 2015-03-13 15:43:37

回答

1

我不認爲這裏有一個簡單的答案。 (我假設你在所有表上都有唯一的索引 - 可能是PK)。我的做法是採取幾個可識別的慢速查詢並查看查詢計劃,並嘗試加快查詢速度無需更改表結構,保存添加索引看起來可能有用。

如果這沒有產生結果 - 即你的當前結構是一個很好的,但你可以做到,但它不夠好 - 然後嘗試在查詢表上使用代理PK的,添加新的PK作爲FK的引用表。然後重複你的測試,看看有什麼不同。

更快地進行查詢是一種黑色藝術。我的做法是從查詢計劃開始,查看涉及表掃描或全索引掃描的任何內容(如果表只有100行忽略它),然後嘗試重構查詢,以便它可以通過某種方式限制它必須搜索的行數。這可能非常困難,您必須非常瞭解數據和關係,以及熟悉SQL以及您可以編寫選擇,子選擇和連接的不同方式。

這一切都有點wa,,但我不認爲有這種情況的唯一的硬性答案。