儲存包含 guid 的 json 的列的全文索引 - 從空間上講,這是個好主意嗎?
我正在考慮為值為 json 字元串的列添加全文索引。這些 json 通常包含
Guid
(或UUID
)值。索引的目標是允許對“普通”單詞(例如,一些使用者生成的文本)和 guid 進行快速搜尋。
有關此專欄的更多資訊,稱為
RequestContent
:
- 我實際上還有另一列,
ResponseContent
,以下內容也適用,因此我認為這個問題的答案也適用於它。此列本質上用作 HTTP Post 請求正文的日誌,以便每個傳入的 POST 請求正文都記錄到該列中。有數百個 Web 服務的請求主體被記錄,兩個不同的 Web 服務請求之間沒有關係。
例如,一個請求可能如下所示:
{ "orderId": "607bbc9b-9c0e-4921-b5c3-55f68891e619", "status": 0, "createdOn": 16011560804216 ... }
而另一個可能看起來像:
{ "claimStatus": 1, "actionStatus": 8, "senderId": "807acc23-9dde-4aaa-b5c3-55df5431e619", "documents": [ { "documentTitle": "some free text" }] ... }
任何 json 都可能包含任何類型的欄位:
number
、短string
欄位(例如firstName
,或 Guid 等)或長string
欄位(通常包含數百個單詞的自由文本,但有時甚至是大型 Base64 編碼數據)boolean
、、嵌套對象、數組。如果重要的話,可以肯定地說大多數請求(我會說 80%)包含number
短string
欄位。此列的類型是
ntext
(是的,它很舊),但我可以將它重新創建為我想要的任何其他類型。為該列建立全文索引是個好主意嗎?我擔心的是索引會為每個 unique 包含一行
Guid
,這會導致佔用不可行的磁碟空間。編輯:@David Spillett 問:
您能否將要索引的部分提取到持久計算列中,然後可以為其添加全文索引?
這在技術上是可行的,但我正在尋找目前案例的答案。
… 值為 json 的列的全文索引 … 通常包含 Guid(或 UUID)值。
為該列建立全文索引是個好主意嗎?
我會說“不”。
全文索引使該欄位中的所有單詞都可用於搜尋。我不認為那是你想要的。您希望能夠搜尋那些 Guid/Uuid 值以及可能的特定請求類型。
我的偏好是將這些值單獨提取到單獨的欄位中並為其編制索引。
如果做不到這一點,請使用支持 JSON 的索引類型,這會更好,但仍比單獨的欄位慢。
它會工作得很好。尺寸和性能是否值得?這取決於太多的事情。為什麼不在測試伺服器上創建該死的東西?