要实现的功能:通过用户的特长、兴趣、去过的城市等多条件(可叠加)筛选出相关用户
用户与关联表的关系皆为一对多
描述如下:
SELECT *
FROM 用户表
LEFT JOIN 用户特长
ON XXX=XXX
LEFT JOIN 用户兴趣
ON XXX=XXX
LEFT JOIN 用户去过的城市
ON XXX=XXX
WHERE 用户特长.特长=AAA
AND 用户兴趣.兴趣=BBB
AND 用户去过的城市.城市=CCC
对于这种情况,如果用left join易实现。
但在数据量较大时,性能会急剧下降。而且不利于日后分库分表,同时一大串sql难维护。
我从网上看到很多说可以在应用层用java/php代码实现join操作,具体要怎么实现,能用这个例子解释一下吗?求解。
基本就两种,join ,或者如 一楼 所说,通过程序去做多条查询。
一般来说呢,如果数据量大,是建议使用第二种,并且加上适当的缓存,因为你这些东西的更新频率也不是很高,并不是很要求实时性。
合理的利用缓存,减轻数据库的压力,自然效率就上去了