You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL百万级商品数据UI筛选选项实时更新查询方案问询

筛选后获取剩余可选筛选值方案

核心思路

基于当前用户已选择的筛选条件,对未使用的筛选属性分别执行去重查询,提取该属性在筛选结果集中所有存在的可选值——这样得到的就是用户后续可以选择的剩余筛选选项。

具体SQL示例

假设当前用户选择了colour = 'blue',要获取其他筛选属性(Size、Name等)的可选值:

  1. 获取Size的可选值:
SELECT DISTINCT Size 
FROM products 
WHERE colour = 'blue' 
ORDER BY Size;
  1. 获取Name的可选值(若Name作为筛选维度,比如商品分类名称):
SELECT DISTINCT Name 
FROM products 
WHERE colour = 'blue' 
ORDER BY Name;

如果用户同时选择了多个筛选条件(比如colour='blue' AND Size='L'),只需把所有已选条件加到WHERE子句中:

SELECT DISTINCT Brand 
FROM products 
WHERE colour = 'blue' AND Size = 'L' 
ORDER BY Brand;

性能优化建议

针对100万级别的数据量,必须优化查询速度:

  • 给每个筛选属性单独创建索引,比如:
CREATE INDEX idx_products_colour ON products(colour);
CREATE INDEX idx_products_size ON products(size);
CREATE INDEX idx_products_brand ON products(brand);
  • 如果存在高频组合筛选(比如colour+size),可以创建联合索引进一步提速:
CREATE INDEX idx_products_colour_size ON products(colour, size);
  • 若属性存在大量NULL值且业务不需要展示,可以在WHERE中加上AND 属性名 IS NOT NULL,减少查询范围。

注意事项

  • 不能依赖分页后的50条数据提取可选值,必须基于全量筛选结果集查询,否则会漏掉仅在未分页数据中存在的选项。
  • 可选值查询建议在后端批量执行,一次性返回所有剩余筛选组的可选值给前端,避免多次请求。

内容的提问来源于stack exchange,提问作者reddfox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 05:40:31