我有一个非常简单的数据库包含一个表T
wOrig nvarchar(50), not null
wTran nvarchar(50), not null
该表有+50万行。我执行一个简单的查询
select wTran where wOrig = 'myword'
查询大约需要40秒才能完成。我根据wOrig的第一个字符分割了表格,执行时间比以前小得多(基于每个表格的新长度)。
我在这里错过了什么吗?数据库不应该使用更有效的方式进行搜索,比如二进制搜索吗?
我的问题基于这种情况,数据库选项的哪些更改可以使搜索更有效,以便将所有数据保存在一个表中?
答案 0 :(得分:2)
您应该使用索引。对于您的查询,您需要wTran(wOrig)
上的索引。您的查询会更快:
create index idx_wTran_wOrig on wTran(wOrig);
根据空间和插入/更新特性等考虑因素,(wOrig)
或(wOrig, wTran)
上的聚集索引可能是最佳解决方案。