gpt4 book ai didi

mysql - 优化分层查询

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

我有一个深层层次模型,如下所示:

账户 -> field ->事件 -> 宾客名单 -> 门票

我需要进行一个查询,根据家长客人列表或事件或 field 或帐户选择门票,所以它看起来像这样:

查询:

select * from user_detail ud, venue v, event e, guest_list g, ticket t

where

t.guest_list = g.id
and g.event = e.id
and e.venue = v.id

and (
ud.guest_list = t.guest_list
or ud.event = g.event
or ud.venue = e.venue
or ud.account = v.account
)

这当然是一个非常昂贵的查询,而且由于我有数百万张票 - 这并不像我希望的那样。

非理想解决方案(在工单级别存储冗余父级引用)

我正在考虑的解决方案是通过在门票行中不仅存储直接父项而且还存储所有 super 父项来优化此问题,因此我不仅会引用 guest 列表表,还会引用父项事件、 field 和每张票的账户。尽管这很容易完成,但这意味着我将存储冗余数据,并且更改父级可能会很麻烦且容易出错。

理想的解决方案(任何不需要冗余数据的解决方案)

这里有什么建议吗?

最佳答案

提高OR性能的最流行方法之一就是使用UNION ALL

因此,将您的查询分成 4 个(每个查询只有一个连接),然后UNION ALL 它们

此外,我希望 t.guest_listg.evente.venuev.account > 都被索引覆盖了,不是吗?

关于mysql - 优化分层查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8796209/

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