18910140161

如何使用 SQL 语句实现商品过滤?

顺晟科技

2022-09-15 19:59:05

134

mysql 数据库:商品表的设计,分为主表和扩展表

主表主要记录商品的通用信息,比如标题,价格,长宽高等:

CREATE TABLE `product` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `status` tinyint(3) NOT NULL DEFAULT '0',
  `type` tinyint(3) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品表';

附表主要记录商品的属性或其他扩展信息:

CREATE TABLE `product_meta` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `pruduct_id` bigint(11) NOT NULL,
  `meta_key` varchar(255) NOT NULL DEFAULT '',
  `meta_value` varchar(255) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品属性表';

但是这样的表,在商品过滤的时候,被sql难住了,比如某个分类下,有颜色,大小,尺寸,材质等属性,请问:

1、这样的sql语句怎么写?
2、有没有更好的表设计方案,过滤查询的sql样的?

一般过于复杂的筛选,都会考虑一些专门的搜索引擎,比如 ES。

另外,对于你这个表的设计,不是很行,如果按照这样设计,后续 meta 表的体积会可能会是 product 的 N 倍,而且介于存储的数据由比较杂,不变检索,甚至效率更低了。

相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航