当前位置:  开发笔记 > 后端 > 正文

SQL连接与单表:性能差异?

如何解决《SQL连接与单表:性能差异?》经验,为你挑选了2个好方法。

我试图坚持保持数据库规范化的做法,但这导致需要运行多个连接查询.如果许多查询使用连接而不是调用可能包含冗余数据的单个表,是否会降低性能?



1> Mitch Wheat..:

保持数据库规范化直到你发现了瓶颈.然后,只有在仔细分析后才能进行反规范化.

在大多数情况下,拥有一套良好的索引和最新统计数据将解决大多数性能和阻塞问题,而不会出现任何非规范化.

如果存在写入以及对其进行读取,则使用单个表可能会导致性能下降.



2> Mike Woodhou..:

人们相信迈克尔·杰克逊(不是个人)曾说过,

程序优化的第一条规则:不要这样做.

程序优化的第二条规则 - 仅限专家:不要这样做.

这可能是在RDBMS出现之前,但我认为他已经扩展了规则以包含它们.

使用标准化数据模型几乎总是需要多表SELECT; 正如这种问题经常出现的那样,对"非规范化"的"正确"答案是什么?问题取决于几个因素.

DBMS平台.

多表与单表查询的相对性能受应用程序所在平台的影响:查询优化程序的复杂程度可能会有所不同.例如,根据我的经验,MySQL在单表查询上的速度非常快,但并不能很好地优化具有多个连接的查询.对于较小的表(比如说不到10K行),这不是一个真正的问题,但是对于大型(10M +)表来说真的很痛.

数据量

除非您正在查看100K +行区域中的表,否则几乎不应该成为问题.如果您正在查看数百行中的表大小,我甚至不会考虑索引.

(解)归一化

规范化的重点是尽量减少重复,以确保只需要在一个地方更改必须更新的任何字段值.非规范化打破了这一点,如果对重复数据的更新很少(理想情况下它们永远不会发生),这就不是什么大问题了.因此,在复制除最静态数据之外的任何内容之前要仔细考虑,注意您的数据库可能会显着增长

要求/约束

您想要满足哪些性能要求?你有固定的硬件或预算吗?有时,通过硬件升级可以最轻松地实现性能提升 - 甚至是最便宜的.您期望什么交易量?小型企业会计系统与Twitter有着截然不同的形象.

最后一个想法让我感到震惊:如果你足够不规范,你的数据库与平面文件有什么不同?SQL对于灵活的数据和多维的retieval来说是极好的,但它可以比直接顺序或相当简单的索引文件慢一个数量级(至少).

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有