谢谢各位大侠,女侠帮忙。
刚接触mysql分表碰到一些问题,实在是不懂,想知道这些问题的解决办法,也许有更好的办法,也麻烦在帮助我的同时告知。
目前有10张表 article0,article1......article9,
表结构 id, uid ,categroyId acticleName, content,addTime
id 通过一张自增id来取得 取模插入对应的表
uid 用户id
categroyId 分类id
acticleName 文章id
content 内容
addTime 添加时间
查询的时候是合并这几个表 查询了,感觉这样不好,合并表了 还有必要分表吗
如果不使用合并查询
1 需要查询 uid=100的所有文章要怎么写
2 需要按需查询以往十条文章
学习用了 谢谢大家
ps 分表规则可能有问题,想法是均匀的插入各表 这样是不是不好
回复内容:
谢邀……
首先列出你对表查询的需求,然后针对业务需求进行分表,不能单纯的按照某个分表方案(文章id取模、按照时间分表等等)。
比如:如果你的需求集中在查询某个用户的文章信息,那可以用uid作为分表的依据。如果其他需求只有一项是读取最新10条,那你可以维护一张最新文章表(只存储最近的10条或者100条文章,有变化就更新)
另外你的文章数量真的已经多到必须分表了吗?如果数量没有达到一个特别大的数量级,可以尝试垂直切分,将经常读取的字段放在一张表,不经常读取的字段拆出来放在另外的一张表里,减少单表的大小,建立好合适的索引,妥妥的查询起来没有问题的……
最后就是表优化完毕后,前台读取的时候,是不是可以做些缓存或者将文件静态化等等……
以上……
我来晚了,基本上就是 @王金亮说的那样了。再补全也是一个原理。懒得说了,希望金亮能多补一些?我就什么都不说了,折叠我吧,我顶金亮一票。
可以使用merge引擎加myisam引擎实现分表。
前面已有很好的回答,补充一下:如果觉得各种条件查询都会用到,按时间分表很可能是最好的选择。
Déclaration:Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn