php,mysql水平分表问题 例如用户表user有400万用户分四张表user01,user02,user03,user04
现在问题是,如果有这样的情况--比如张三,他注册的时候是写入在user01表,但隔了好久之后才推荐用户来注册,所以他推荐的下层用户可能分布在user02,user03或u...
现在问题是,如果有这样的情况--比如张三,他注册的时候是写入在user01表,
但隔了好久之后才推荐用户来注册,所以他推荐的下层用户可能分布在user02,user03
或user04 现在我如果要查询要张三有哪些下级用户应该怎么做?
表结构 id name pid(上级用户id) 展开
但隔了好久之后才推荐用户来注册,所以他推荐的下层用户可能分布在user02,user03
或user04 现在我如果要查询要张三有哪些下级用户应该怎么做?
表结构 id name pid(上级用户id) 展开
1个回答
展开全部
你这样的情况可以使用UNION
SELECT * 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,程序像使用当个逻辑表,表的存储由系统优化,有可能分布在一系列磁盘阵列上,甚至可能是分布在多个服务器上。
SELECT * 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,程序像使用当个逻辑表,表的存储由系统优化,有可能分布在一系列磁盘阵列上,甚至可能是分布在多个服务器上。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询