2016-07-24 80 views
1

我們希望提高連接查詢的性能,並且索引位於nvarchar(1000)的列上。使用SQL Server提高連接查詢性能

正在使用另一種數據類型的索引,例如bigint(通過添加附加列並使用原始列上的某個哈希映射函數填充它)可以提高性能?

將指數更改爲nvarchar(200)而不是nvarchar(1000)提高性能(假設最長的值可以是200個字符)?

+1

你能爲你提供數據庫結構查詢嗎>> –

+0

我只想得到一個主要的答案,是索引上的數字比字符上的索引好?如果值相同且不超過200個字符,那麼在navchar(1000)上的索引比在navchar(200)上的索引好? – Muky

+0

如果數字與那個navchar相同,它將具有相同的性能。 Navchar(200)'索引將有更好的表現,然後...閱讀我的答案:) –

回答

0

索引的性能取決於索引列的數量行和大小。

是的,用hashmap添加額外的列,使用和索引,這可能會增加一些SQL查詢的性能,因爲索引會更小,sql會更快地在內存中操作。但是你必須在其他地方計算hashmaps,所以應用程序的最終性能不會更大。還有一個問題是大數據量的hashmap工作不可預測(可能有1個hashmap用於n值的navchar)。所以我最後會說,這不是個好主意。

將navchar(1000)更改爲navchar(200)聽起來好一點。指數會更小,更快,新價值的插入也會更快,而最重要的是,它將會保持穩定。但性能差異不會那麼光榮。

+1

'nvarchar(1000)** **不能用作索引列,因爲它超過了索引條目的最大900字節。 –

+0

還沒有被告知,他使用什麼樣的SQL服務器。那你怎麼知道? –

+1

***所有***版本的SQL Server(最多包括2016)都對索引條目有900字節限制 –