sql - 多个特征组合导致要索引的数字的 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.
然后我可以在该列上有一个索引,用户将必须更快地搜索产品。
有没有更好的方法或标准的方法来处理这些事情?
解决方案
您可以使用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';
推荐阅读
- pandas - 计算 Z 分数有什么问题?
- android - 房间类型转换器(列表
) 不起作用 - uber-api - Uber API - 我们可以显示本地可用性吗?
- css - 什么标准(如果有的话)定义了 HTMLDocument.style?
- reactjs - 如何使用动态字段重新创建表单以在 React antd(rc-forms)中进行编辑
- ios - Flutter:当应用程序在后台但未在 iOS 中终止时,无法在通知单击时重定向到特定屏幕
- javascript - 多语言应用程序不起作用(javascript)
- c++ - Using RAII to re-allocate a resource after a given number of iterations
- apache-kafka-streams - 如果我想在 Kafka 流中加入 KStream-KTable ,我需要进行共同分区吗?
- angular - 确保 spyOnProperty 使用 Object.defineProperty 创建可配置属性