
对应关系是多对多,也就是一篇文章可以给多人收藏,一人可以收藏多篇文章,使用第二种方法,可以任意扩展,第一种方法虽然在取值的时候方便,但是其他的扩展 *** 作会很痛苦
第二个问题解法跟第一种一样
第三个问题:
缓存的使用,避免过度查询同样的sql,如果你的系统重复查询很少,你用缓存也没什么用,如果多,用缓存会快很多,你看你使用的情况,自己衡量什么时候该用
方法有很多,建二级缓存,把用户登录和所在的表名缓存在一起,很轻松就定位到了,还可以用分表策略,每个登录用户账号HASH一个值,做为表名的后缀,最多50个,都可以控制。
分表:你只要记住必须要根据什么来分这句话就可以了。
插入:总要用用户名吧。根据他定位放到哪一张表里。
你这样的情况可以使用UNIONSELECT * FROM user01 WHERE pid=张三的ID UNION
SELECT * FROM user02 WHERE pid=张三的ID UNION
SELECT * FROM user03 WHERE pid=张三的ID
【张三的ID】先用语句查询出来:
SELECT id FROM user01 WHERE name='张三' UNION
SELECT id FROM user02 WHERE name='张三' UNION
SELECT id FROM user03 WHERE name='张三'
其实一般建议不这样分表,数据太大可以考虑使用专业点的DBMS,程序像使用当个逻辑表,表的存储由系统优化,有可能分布在一系列磁盘阵列上,甚至可能是分布在多个服务器上。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)