業務關系一對多分頁,多一側條件查詢
在設計一對多業務關系并需要分頁和查詢多一側條件時,可以考慮以下兩種方法:
方法一:兩表設計
這種方法將業務關系拆分為兩張表:主表(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