字典数据库,每个char的一个表vs表

时间:2016-04-30 15:39:13

标签: sql sql-server

我有一个非常简单的数据库包含一个表T

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

该表有+50万行。我执行一个简单的查询

select wTran where wOrig = 'myword'

查询大约需要40秒才能完成。我根据wOrig的第一个字符分割了表格,执行时间比以前小得多(基于每个表格的新长度)。
我在这里错过了什么吗?数据库不应该使用更有效的方式进行搜索,比如二进制搜索吗? 我的问题基于这种情况,数据库选项的哪些更改可以使搜索更有效,以便将所有数据保存在一个表中?

1 个答案:

答案 0 :(得分:2)

您应该使用索引。对于您的查询,您需要wTran(wOrig)上的索引。您的查询会更快:

create index idx_wTran_wOrig on wTran(wOrig);

根据空间和插入/更新特性等考虑因素,(wOrig)(wOrig, wTran)上的聚集索引可能是最佳解决方案。