利用聯(lián)表查詢優(yōu)化用戶收藏內(nèi)容讀取
在用戶收藏功能中,包含三個(gè)數(shù)據(jù)表:favorites(收藏?cái)?shù)據(jù))、goods(商品)和 articles(文章)。為了讀取收藏的內(nèi)容標(biāo)題,您需要在兩個(gè)數(shù)據(jù)表(goods 和 articles)中查找相應(yīng)的條目,并根據(jù)收藏日期按降序排列結(jié)果。
第二種方法 – 使用 in 查詢
使用第二種方法(將 cid 放入數(shù)組并使用 in 查詢讀取數(shù)據(jù)),雖然效率較高,但在需要對(duì)按照 dateline 排序的結(jié)果進(jìn)行組合時(shí)會(huì)遇到困難。
聯(lián)表查詢解決方案
為了解決這個(gè)問題,建議使用聯(lián)表查詢。聯(lián)表查詢可以將多個(gè)數(shù)據(jù)表連接起來并合并其數(shù)據(jù)。在這種情況下,您可以將 favorites 表與 goods 和 articles 表分別使用 left join 連接。
sql 查詢
SELECT if(goods.id IS NULL, articles.title, goods.title), favorites.* FROM favorites LEFT JOIN goods ON goods.id = favorites.cid AND favorites.type = 1 LEFT JOIN articles ON articles.id = favorites.cid AND favorites.type = 2 ORDER BY dateline DESC
登錄后復(fù)制
if 語句
if 語句用于根據(jù) type 字段的值來選擇顯示 goods.title 還是 articles.title。當(dāng) type 等于 1 時(shí),顯示商品標(biāo)題;當(dāng) type 等于 2 時(shí),顯示文章標(biāo)題。
優(yōu)點(diǎn)
這種聯(lián)表查詢方法的優(yōu)點(diǎn)在于:
- 僅執(zhí)行一次數(shù)據(jù)庫查詢。
- 正確處理了多對(duì)一關(guān)系,并基于 dateline 列對(duì)結(jié)果進(jìn)行排序。