2012-10-05 92 views
1

我已經定義了各種文本值int。我將int值存儲在數據表中以便更好和快速地搜索。我有三個選項來顯示文本值:枚舉VS內部加入/其中

  1. 我在我的代碼中聲明Enum並根據int值顯示文本值。它是靜態的,如果要添加新值,我必須更改代碼。

  2. 爲了使它充滿活力,我可以在一個表,該表在另一個數據庫和管理擁有其存儲int和文本值。此表中的新值可由管理員更新。無論何時提取記錄,我都使用內部聯接來顯示文本值。

  3. 我存儲在各自的數據表中的實際文本。這會使搜索變慢。

我的問題是哪個選項最好在以下條件下使用?

  1. 數據表具有超過1到1000萬的記錄。
  2. 有超過5000個用戶在表上執行提取,搜索和更新過程。
  3. 最大文本值是12個數字和長度(最大)50個字符。
  4. 有30個數據表具有上述條件和功能。

回答

1

我喜歡選項#2和選項#1的組合 - 使用int的,但在另一個數據庫中有字典表。
讓我解釋一下:

  • 到int和文本存儲在一個表,該表在另一個數據庫;
  • 原始表中只存儲int;
  • 不從另一個數據庫連接表得到客戶的文本,但緩存字典和從字典
0

解決文本如果你有字面上數百萬條記錄,幾乎可以肯定在試圖旋轉起來沒有一點這樣的結構在服務器代碼或任何形式的客戶端。它需要保存在一個數據庫中,恕我直言。

創建列表中的查詢需要足夠的智慧來約束返回的記錄數爲可管理的數量。分區視圖或存儲過程可能在這方面有所幫助。

如果這主要是一個只讀列表,只有在管理活動中做了更新,它應該有可能使對錶的查詢非常迅速,而客戶端正確的索引和查詢。

+0

我認爲數百萬條記錄是整數被用作查找文本的位置。我讀過它並沒有將很多文本值轉換爲整數(「最大文本值爲12,數量和長度(最多)爲50個字符」) – Chris

1

我不會因爲給出的原因去選擇1。枚舉不作爲查找。你可以用創建一個字典來代替1,但是每次改變時都需要重新編譯,這是不好的。如果它是保證這裏重複了很多

在表中存儲文本(即選項3)是壞的。這正是你應該使用一個查找表,你在2號。

建議所以,是的,它們存儲在一個數據庫表,並通過負責管理這些。

如果只是一張小桌子,加盟不應該花很長時間。如果您擔心替代方法可能是首次將查找表加載到代碼中的字典中,並在小查找表中查找代碼中的值。我懷疑你只是通過加入來做這件事會有問題。

無論條件如何(即記錄數量等),我都會採用這種方法。條件確實使它更明智。 :)