解决 SQL 问题绝对能让你对 MySQL 的理解更进一步!
SQL教程栏目介绍如何更有效理解MySQL

推荐(免费):SQL教程
属性表(product_props)结构如下
数据量800W以上
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | int | id |
| pn_id | int | 属性类型 |
| pv_id | int | 属性值 |
| product_id | int | 产品ID |
其中product_id与pn_id,pv_id是一对多的关系。
数据类似这样:
| product_id | pn_id | pv_id |
|---|---|---|
| 10970 | 5 (型号) | 135 (苹果9) |
| 10970 | 11 (内存) | 23 (512G) |
| 10970 | 10 (颜色) | 17 (土豪金) |
| 10970 | 8 (网络) | 6(5G) |
| 10980 | 5 | 135 |
| 10980 | 11 | 24 (1024G) |
| 10980 | 10 | 16 (极光蓝) |
产品表(product)结构如下
数据量40W以上
| 字段名 | 类型 | 说明 |
|---|---|---|
| product_id | int | product_id |
| type_id | int | 类型id |
| brand_id | int | 品牌id |
| model_id | int | 型号id |
| status | tinyint | 状态 |
数据类似以下:
| product_id | type_id | brand_id | model_id | status |
|---|---|---|---|---|
| 10970 | 1(手机) | 1(苹果) | 1(Iphone8) | 1(正常) |
| 10980 | 1(手机) | 1(苹果) | 1(Iphone8X) | 3(已售) |
| 10981 | 1(手机) | 1(苹果) | 1(Iphone8XP) | 1(正常) |
问题
找出型号为苹果9同时内存为512G,颜色为土豪金,状态为正常的产品总数,
ps : 属性条件可能会有超过10组。
要求
性能第一,杜绝聚合函数等
原问题的解决方案性能排行
- 来自 @Kamicloud的 exist方案
SELECT
sql_no_cache `product_id`
FROM
`zx_tests` AS a
WHERE
`pn_id` = 101 AND `pv_id` = 59
AND EXISTS( SELECT
sql_no_cache *
FROM
`zx_tests`
WHERE
a.product_id = product_id and
`pn_id` = 101 AND `pv_id` = 171);
2 组条件下 0.657,3 组 0.695,4 组 0.759,5 组 0.743 (单独查属性表)
1、本站目前拥有近 1000+ 精品收费资源,现在加入VIP会员即可全部下载。
2、本资源部分来源其他付费资源平台或互联网收集,如有侵权请联系及时处理。
欧迪资源网 » 解决 SQL 问题绝对能让你对 MySQL 的理解更进一步!
2、本资源部分来源其他付费资源平台或互联网收集,如有侵权请联系及时处理。
欧迪资源网 » 解决 SQL 问题绝对能让你对 MySQL 的理解更进一步!

发表评论