一對多業務關系分頁查詢:如何高效篩選多一側條件?

一對多業務關系分頁查詢:如何高效篩選多一側條件?

業務關系一對多分頁,多一側條件查詢

在設計一對多業務關系并需要分頁和查詢多一側條件時,可以考慮以下兩種方法:

方法一:兩表設計

這種方法將業務關系拆分為兩張表:主表(user)和從表(tag) 。主表存儲主體信息,從表存儲主體與相關標簽之間的關聯。

優點:

缺點:

  • 分頁時需要通過關聯查詢獲取標簽,可能影響性能。
  • 當標簽數量眾多時,從表會變得非常龐大。

方法二:單表設計

這種方法將業務關系存儲在單張表中,使用一個字段(如tag)存儲所有標簽。

優點:

  • 數據結構簡單,易于管理。
  • 分頁時不需要關聯查詢,性能較好。

缺點:

  • 違反了數據庫第一范式,數據冗余度高。
  • 查詢多一側條件時需要使用like查詢,性能較差,且結果不準確。

更優方案

為了解決上述方法的缺點,可以采用以下優化方案:

select *, (select group_concat(tag) from tag where user_id = user.id and tag = '活潑') as tags from user where exists(select 1 from tag where user_id = user.id and tag = '活潑' limit 1) limit 0, 10;

此查詢通過使用子查詢和exists關鍵字,高效地篩選符合條件的主體,并同時獲取符合條件的標簽。

? 版權聲明
THE END
喜歡就支持一下吧
點贊13 分享