gpt4 book ai didi

php - 没有连接的 EAV 表选择

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

我目前有以下 EAV 表:

id
field_name
field_value

还有一个标准表:

id
first_name
last_name

我将每个与 ID 匹配的值的标准表连接到 EAV 表,所以我的查询看起来像这样:

SELECT id, first_name, last_name, fieldname1, fieldname2
FROM standard_table
LEFT JOIN EAV AS fieldname1 ON
(fieldname1.id = standard_table.id AND fieldname1.field_name = 'fieldname1')
LEFT JOIN EAV AS fieldname2 ON
(fieldname2.id = standard_table.id AND fieldname2.field_name = 'fieldname2');

这一直运行良好,直到今天我的 EAV 表中有 62 个自定义字段,这意味着我的查询正在连接到 62 个表,因此达到 MySQL 表连接限制并失败。

整个查询似乎是一种糟糕的方式,我如何重写它才能使其更快并且不需要 62 表连接。

最佳答案

您还可以对 EAV 使用聚合。查询看起来像:

SELECT st.id, st.first_name, st.last_name,
MAX(CASE WHEN EAV.field_name = 'fieldname1' THEN fieldname1 END),
MAX(CASE WHEN EAV.field_name = 'fieldname2' THEN fieldname2 END)
FROM standard_table st JOIN
EAV
ON EAV.id = st.id
GROUP BY st.id, st.first_name, st.last_name;

随着您获得越来越多的列,这可以比数十个联接执行得更好。

关于php - 没有连接的 EAV 表选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31338549/

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