黑夜路人时间:ID board_id int(10)版块名称 board_name char(50)子表ID table_id smallint(5)产生时间 created datetime“贴吧主题表”包含如下字段:主题ID topic_id int(10)主题名称 topic_name char(255)版块ID board_id int(10)创建时间 created datetime“贴吧回复表”的字段如下:回复ID reply_id int(10)回复内容 reply_text text主题ID topic_id int(10)版块ID board_id int(10)创建时间 created datetime那么上面保存了我们整个贴吧中的表结构信息,三个表对应的关系是:版块 --> 多个主题主题 --> 多个回复那么就是说,表文件大小的关系是:版块表文件 < 主题表文件 < 回复表文件所以基本可以确定需要对主题表和回复表进行分表,已增加我们数据检索查询更改时候的速度和性能。看了上面的表结构,会明显发现,在“版块表”中保存了一个"table_id"字段,这个字段就是用于保存一个版块对应的主题和回复都是分表保存在什么表里的。比如我们有一个叫做“PHP”的贴吧,board_id是1,子表ID也是1,那么这条记录就是:board_id | board_name | table_id | created1 | PHP | 1 | 2007-01-19 00:30:12相应的,如果我需要提取“PHP”吧里的所有主题,那么就必须按照表里保存的table_id来组合一个存储了主题的表名称,比如我们主题表的前缀是“topic_”,那么组合出来“PHP”吧对应的主题表应该是:“topic_1”,那么我们执行:SELECT * FROM topic_1 WHERE board_id = 1 ORDER BY topic_id DESC LIMIT 10这样就能够获取这个主题下面回复列表,方便我们进行查看,如果需要查看某个主题下面的回复,我们可以继续使用版块表中保存的“table_id”来进行查询。比如我们回复表的前缀是“reply_”,那么就可以组合出“PHP”吧的ID为1的主题的回复:SELECT * FROM reply_1 WHERE topic_id = 1 ORDER BY reply_id DESC LIMIT 10这里,我们能够清晰的看到,其实我们这里使用了基础表,基础表就是我们的版块表。那么相应的,肯定会说:基础表的数据量大了以后如何保证它的速度和效率?当然,我们就必须使得这个基础表保持最好的速度和性能,比如,可以采用MySQL的内存表来存储,或者保存在内存当中,比如Memcache之类的内存缓存等等,可以按照实际情况来进行调整。一般基于基础表的分表机制在SNS、交友、论坛等Web2.0网站中是个比较不错的解决方案,在这些网站中,完全可以单独使用一个表来来保存基本标识和目标表之间的关系。使用表保存对应关系的好处是以后扩展非常方便,只需要增加一个表记录。【欢迎您访问www.5ucms.org
| 上一篇:5ucms模版,《网络神采4》技术大揭密之:DedeCMS存储过程 下一篇:5ucms仿站,如何合理的利用索引对MySQL进行优化 |
|
| 本站声明:本网站所载文章等内容,目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权及其它问题,请在30日内与本网联系(Email:3876307#qq.com),我们将在第一时间删除内容。若原创内容转载请注明出处。 5ucms插件,分表处理设计思想和实现的关键词: |
|