【发布时间】:2015-12-12 00:45:39
【问题描述】:
这是一个简单的问题。假设我有一个大表(500 万行),我别无选择,只能进行全表扫描。
SELECT * FROM Table1
有什么办法可以让我的数据库更快地返回结果?
背景:
我们有一个由第三方提供给我们的应用程序,该应用程序被设计为健壮/灵活 - 它的数据库中只有很少的大表。例如,其中一张表是“对象”表,它存储所有对象。另一个表是“关系”表,它捕获对象之间的所有关系。它本质上允许您在不更改其架构的情况下存储任何内容。
我的任务是设计一个单独的报告应用程序——一个查询这个数据库的应用程序。它必须是实时数据。而且由于表的大小,加上查询的复杂性,存在性能问题。
我想知道我应该如何处理性能问题。我已经在索引之后创建了索引,但查询仍然非常复杂,最终,我仍然需要进行多次全表扫描。
好消息是,我仍处于设计阶段 - 所以我希望听到尽可能多的建议,以防我遗漏了什么。
【问题讨论】:
-
PS:500万不算大
-
@EdHeal ...它肯定“大”到足以在全表扫描中出现性能问题......
-
RAID 0 一些 SSD 驱动器!
-
@NeilMcGuigan 嗯,想到了 SSD,但没有想到 RAID。谢谢。
-
你对数据做了什么?如果您选择所有内容并将其返回给客户端,那么瓶颈很可能是网络和客户端应用程序而不是数据库。如果您在 Oracle 中处理数据以构建聚合或多维数据集,则可能会进行优化。否则,这个问题太宽泛了。例如,您可以购买 Exadata 机器。但对于一个相当不明确的问题,这是一个昂贵的解决方案。
标签: database oracle sqlperformance full-table-scan