多个特征组合导致编号索引的SQL问题

时间:2018-10-20 17:25:00

标签: sql sql-server indexing

让我说我有一个简单的桌子:

笔记本电脑

Id (int autoincrement, 
Name nvarchar(50)  
2gb Ram ( bit ),
4gb Ram ( bit ),
250 hdd ( bit )
500 hdd ( bit )

所以我们有一个笔记本电脑桌子,它只有4种可能的配置。

如果它具有2gb的ram和250gb的硬盘,则它具有

 (id product), (name product) 1 0 1 0 

我希望这很简单。

现在我想获得这4个可以具有多个组合并以数字表示的特征。

因此,当用户选择他想要一台具有2GB内存和250GB内存的笔记本电脑时, 然后,我将在数据库中有一列“ Characteristics_combinatons”

因此1 0 1 0变成..类似于.. 1010。

所以我会做

Select * from Laptops where Characteristics_combinatons = 1010.

然后我可以在该列上建立索引,用户将必须更快地搜索产品。

是否有更好的方法或标准方法来处理此类问题?

1 个答案:

答案 0 :(得分:1)

您可以使用concat()创建一列,然后进行搜索。我会使用一个字符串:

alter table laptops add combo as (concat([2gb Ram], [4gb Ram], [250 hdd], [500 hdd]) persisted;

create index idx_laptops_combo on laptops(combo);

select l.*
from laptops
where combo = '1010';