2016-04-30 61 views
0

我有一個非常簡單的數據庫包含一個表T字典數據庫,一個表VS表中的每個字符

wOrig nvarchar(50), not null 
wTran nvarchar(50), not null 

表有5000萬行。我執行一個簡單的查詢

select wTran where wOrig = 'myword' 

該查詢大約需要40秒才能完成。我根據wOrig的第一個字符分割表格,執行時間比以前小得多(基於每個表格的新長度)。
我在這裏錯過了什麼嗎?數據庫不應該使用更有效的方式來進行搜索,比如二進制搜索?
我的問題基於這種情況,數據庫選項的哪些更改可以使搜索更高效,以便將所有數據保存在一個表中?

回答

2

您應該使用索引。對於您的查詢,您需要wTran(wOrig)上的索引。您的查詢會快得多:

create index idx_wTran_wOrig on wTran(wOrig); 

取決於因素,如空間和插上(wOrig)(wOrig, wTran) /更新的特性,一個聚集索引可能是最好的解決方案。

+0

謝謝您的回覆。你能解釋更多還是指向我的鏈接? –

+1

@BassemAkl。 。 。一個好的開始是文檔:https://technet.microsoft.com/en-us/library/jj835095(v=sql.110).aspx。 –

+0

非常感謝。我將按照鏈接並嘗試此解決方案。 –

相關問題