我已经在一个复杂的连接和多个查询上看到过类似的问题,在这种情况下,答案总是“它取决于”哈哈,但我想知道我是否可以在方向上得到输入。希望它不会太复杂,难以解释。
我正在显示一个页面,必须从大约3-4个不同的表格拉信息。假设我们有一个人,他可能属于一个俱乐部,而这个俱乐部有很多活动。我将不得不从俱乐部、人员、活动信息等中提取信息。
现在我把它们放在3-4个单独的表中,但我的events表有大量的列,我非常确定这些列没有被规范化,但我保留了它,这样我就不需要做超过3-5个连接的最大值。现在看起来用一个小的数据集就可以了,但是我不禁想知道,如果把它们分成3-4个单独的查询,然后缓存其中一些查询的结果会不会更快?events表相当频繁地更新,因此我可以看到被无效,但组织和用户表不会,所以我可以看到受益于后一种解决方案。那么你们推荐哪一个呢?
与此相关的还有,我的events表有大量列,其中一些列存储频繁更新的数据或大型文本列,用于存储序列化的键/值模板数据。将其划分到另一个表中是否明智,这样我就有了“常规”数据,然后是频繁更新的事件数据?谢谢你的帮助。
发布于 2010-11-20 10:13:24
如果不针对特定的数据集和表以及它们的使用频率进行测试,就没有一个好的答案。
看起来你已经很好地掌握了每种方法的优缺点。如果您有空间缓存大量数据,或者如果某些俱乐部被许多不同的用户访问,那么您可能会更好地缓存每个部分。
如果您已经设置了memcached,我建议您只需将其分离并缓存每个查询即可。当数据发生变化时,需要做一些额外的工作来使正确的缓存无效,但是缓存对于性能来说是一个好主意,而且这可以提早实现。
我现在不会太担心这件事。当你有其他事情可以做的时候,过早的优化只会花费你大量的时间。
只要让它正常工作,然后如果你以后遇到性能问题,你可以分析你的应用程序并专注于优化真正需要它的地方。
https://stackoverflow.com/questions/4230819
复制相似问题