目前我有一個龐大的用戶表,有數百萬行我認爲,並且該用戶表通過UserTypeJoin錶鏈接到UserType表。由於UserType表的所有聯接,搜索和篩選需要很長時間。SQL Server - 非規範化連接表以提高性能
我已經研究過使用索引視圖,看起來不錯,但是當我嘗試創建聚集索引時,我被告知聚集索引無法應用於左連接的視圖。並不是所有的用戶都有一個UserType,所以我需要做一個左連接。
所以現在我認爲反規範化是我最好的方法。
我現在的表結構看起來是這樣的:
USER
UserId
UserName
Sex
Description
USER TYPE JOIN
UserId
UserTypeId
USER TYPE
UserTypeId
Name
而且我想改變結構來此的:
USER
UserId
UserName
IsUserTypeX bit
IsUserTypeY bit
IsUserTypeZ bit
etc...
用戶可以有UserTypes 11之間0和。
我會針對我的數據運行的一個典型查詢是使用他們的姓名,性別,描述或用戶類型或這些屬性的組合來搜索用戶。
這些表主要用於搜索,而不是用於寫入,而且我最近做的所有研究都告訴我,讀密集表應該是非規範化的。
這是我在這種情況下的最佳選擇嗎?
或者有沒有創建索引視圖而不使用左連接,但仍然返回所有行的方法?這肯定是更簡單的方法,因爲我不需要更改大量的代碼。
您是否考慮過使用存儲過程? –
不,但在這種情況下,這會如何幫助我?我仍然會讓桌子加速放慢速度。 – Owen
爲什麼你想要返回沒有usertype的用戶? – podiluska