我有用戶和組之間的關係。用戶可以在一個組中或不在。子查詢優化
編輯:在模型中添加了一些東西,使其更方便。
比方說,我有一個規則的組中添加用戶認爲它有特定的小鎮,像18歲的自定義元數據)。
Curently,我這樣做,知道我要組住在巴黎18區誰是人的補充哪些用戶:
SELECT user.id AS 'id'
FROM user
LEFT JOIN
(
SELECT user_id
FROM user_has_role_group
WHERE role_group_id = 1 -- Group for Paris
)
AS T1
ON user.id = T1.user_id
WHERE
(
user.town = 'Paris' AND JSON_EXTRACT('custom_metadata', '$.age') = 18
)
AND T1.user_id IS NULL
它的工作原理&給我的用戶插入的ID組。
但是,當我有50個組進行時,比如50個城鎮或不同年齡段,它迫使我做50個請求,這對我的數據庫來說非常緩慢並且效率不高。
我怎樣才能爲每個組生成結果?
喜歡的東西:
role_group_id user_to_add
1 1
1 2
2 1
2 3
我知道只有這樣,才能做到這一點,現在是做類似上面的幾個子查詢的UNION,當然這是非常緩慢的。
請注意,custom_metadata字段是用戶定義的字段。我無法創建特定的列或表格。
非常感謝您的幫助。
請注意,該組是一個保留字,對於表/列標識符來說它是一個糟糕的選擇 - 即使在任意示例中也是如此。 – Strawberry
你怎樣設法創建'user_has_group'行,其中'group_id'已設置,但'user_id'未設置? – RiggsFolly
我也在努力去理解什麼使用一個'Group'表只有一個'id',並且沒有其他的表示這個組像什麼'name' – RiggsFolly