gpt4 book ai didi

具有多个自连接的键值查询的 mysql 替代方案

转载 作者:行者123 更新时间:2023-11-29 17:57:14 25 4
gpt4 key购买 nike

我有一个带有数字过滤器的表格(年龄、体重、薪水等)。由于我事先不知道过滤器,所以我必须使用键值对:

company
id, name
1, ACME

users
id, name, company_id
1, jon doe, 1

filters
id, user_id, filter, value
1, 1, 'age', 30
2, 1, 'weight', 82
3, 2, 'salary', 50000

我的查询检索属于特定公司并匹配一个或多个过滤条件的任意组合的用户:例如

SELECT COUNT(*) FROM users, filters as age, filters as weight
WHERE age.user_id = users.id
AND weight.user_id = users.id
AND age.filter = 'age'
AND age.value = 30
AND weight.filter = 'weight'
AND weight.value = 100
AND users.company_id = 1

该表包含数百万行,我已经尝试了过滤器、值、user_id 列的所有可能的索引组合。查询需要数秒到数分钟的时间。

对于我的用例有更好的解决方案吗?

最佳答案

这是你想要的吗?

select f.user_id
from filters f
where (f.filter, f.value) in ( ('age', 20), ('weight', 100) )
group by f.user_id
having count(distinct f.filter) = 2;

关于具有多个自连接的键值查询的 mysql 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48690226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com