簡體   English   中英

使用代理鍵重構數據庫

[英]Refactoring DB with surrogate keys

我們的數據庫有大約800個表,過程和函數之間有4000個表,並且大量使用了復合鍵。 問題是:您是否會逐個更改表和所有程序/功能,以使用由復合鍵插入的代理鍵? 感謝您的任何建議。

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

我認為這里沒有一個簡單的答案。 (我假設您在所有表上都有唯一的索引-可能是PK。)我的處理方法是采用幾個可識別的慢查詢並查看查詢計划,並嘗試加快查詢速度在不更改表結構的情況下,保存添加索引似乎有用。

如果這沒有產生結果(即,您當前的結構不錯,但還不夠好),請嘗試在查詢的表上使用代理PK,然后將新的PK作為FK添加到引用表中。 然后重復測試,看看有什么不同。

加快查詢速度有點荒唐。 我從查詢計划開始的方法是,查看涉及表掃描或全索引掃描的所有內容(如果表僅包含100行,請忽略它),然后嘗試重新構造查詢,以便它具有某種方式限制它必須搜索的行數。 這可能非常困難,您必須非常了解數據和關系,並且必須非常了解SQL以及編寫選擇,子選擇和聯接的不同方式。

這有點麻煩,但是我認為對於這種情況並沒有一個堅定而快速的答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM