我有一个MariaDB InnoDB表,有几百万行,但只有数字和时间戳组成的固定宽度的短行,我们通常使用现有的任何一列对行进行搜索、过滤和排序。
我们希望添加一列来存储每行相关的 "url"。 理想情况下,每条记录都有它的url.我们知道事实上我们不会通过url列来进行排序,搜索和过滤,我们不介意将url截断到它的前255个字节,所以我们将给它VARCHAR类型。 整个记录将变成可变宽度,在很多情况下,原始记录的宽度将增加一倍。
我们正在考虑使用另一个不同的二级表来存储varchar.我们可以在查询数据时加入它们,或者更有效地--可能--只是获取我们正在显示的页面的url.这种方法是否可取?
这种方法是否可取?是否有更好的选择,也能让我们保持性能?
更新:正如用户Bill Karwin在下面的评论中所指出的,InnoDB并不像MyISAM那样受益于固定宽度,所以这里真正的问题是关于行的大小,而不是固定宽度和可变宽度的讨论。
假设你可以控制URL的生成方式,你可能想把它改成固定长度的状态。比如Youtube视频的URI。始终为11个字符 和base-64。这就解决了可变长度的问题,避免了连接表。
如果改变URI的生成方式不是一个选项,你有几个选择来使它成为固定长度。
考虑到根据你的需求,拥有可变的长度可能不会有那么大的问题。唯一的问题可能是,如果你是 田地面积过大但似乎不是你的情况。