首页 > 解决方案 > 多个特征组合导致要索引的数字的 Sql 问题

问题描述

假设我有一个简单的表:

笔记本电脑

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

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

如果它有 2gb 内存和 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.

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

有没有更好的方法或标准的方法来处理这些事情?

标签: sqlsql-serverindexing

解决方案


您可以使用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';

推荐阅读