我已经读过,如果一个表有很多列,但大部分时间只使用其中一个(比如论坛帖子中的标题列),提高性能的方法就是分区到两个表格,其中一个将仅包含标题,另一个将包含其他列(例如论坛帖子正文)。
但是,如果我使用
select ForumTitle from Forum;
不足以阻止所有列(例如论坛帖子的主体)加载到内存中,并且不需要分区吗?
谢谢,
乔尔
答案 0 :(得分:2)
没有。分区表的想法是结果表要小得多;它适合较少的页面。因此,如果MySQL需要频繁访问数据,那么包含ForumTitles的请求数据已经存在于内存中的可能性要大得多。
如果一个表包含很多字段,则需要在内存中缓存更多页面以缓存相同数量的ForumTitles。
MySQL在页面上按顺序存储行的所有列,并且不能仅加载或缓存行的一部分。