我有一個鍵/值表我用來存儲可以是文本或數字,但沒有別的數據。使用sql_variant存儲數據的性能問題
在初步測試中,在申請時向SQL_VARIANT列citeria,比如我看到可怕性能:
SELECT * FROM MY_DATA WHERE
MY_ENTITY_TYPE = 555
AND CAST(MY_SQL_VARIANT_COLUMN AS NUMERIC) = 2254
所以,很顯然有一些將要打正着這樣的疑問,但我查看查詢的時間超過了10秒,表中只有幾千行。
考慮到我只是要存儲數字或文本數據,使用varchar(255)列會更合理嗎?這樣,選擇性能應該是快速的,我只需要做一個選擇後CAST就可以將數據轉換爲適當的數據類型。
但是這個例子並沒有使用「不標準」(使用你有點混淆的術語)。它使用equals運算符,在這種情況下,索引列真的應該有所幫助。假設您的意思是,當您使用與上述略有不同的查詢時,如ALTH增強索引,可提高性能,例如WHERE EntityType!= @typeID。 – 2012-10-19 11:39:08