Sql проблемы с комбинациями нескольких характеристик, чтобы привести к числу для индекса - PullRequest
0 голосов
/ 20 октября 2018

Допустим, у меня есть простая таблица:

Ноутбуки

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

Итак, у нас есть стол для ноутбуков, и он имеет всего 4 возможных конфигурации.

Если он имеет 2 ГБ оперативной памяти и 250 ГБ жесткого диска, то он имеет

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

Я надеюсь, что это просто.

Теперь я хочу получить эти 4 характеристики, которые могут иметь несколькокомбинации и представляют их в виде числа.

Итак, когда пользователь выбирает, что он хочет ноутбук с 2 ГБ оперативной памяти и 250 ГБ, я буду иметь столбец в базе данных под названием «Characteristics_combinatons»

Такчто 1 0 1 0 становится .. что-то вроде .. 1010.

Так что я сделаю

Select * from Laptops where Characteristics_combinatons = 1010.

Тогда я могу иметь индекс для этого столбца, и пользователь будет искать продуктыдолжен быстрее.

Есть ли намного лучший или стандартный способ борьбы с такими вещами?

1 Ответ

0 голосов
/ 20 октября 2018

Вы можете использовать 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';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...