-2

我们有一个 Microstrategy / Oracle 设置,它有一个包含 50+ 十亿行(即 50,000,000,000+ 行)的事实表。

系统性能很不稳定;有时运行正常,但有时运行速度很慢,即简单的报告需要 20 分钟才能运行!

最奇怪的部分:如果我们在报表中添加更多约束(即更多 where 子句),最终导致 LESS 数据返回,报表实际上会进一步变慢。

我们能够从 Microstrategy 中获取 SQL,并且我们发现 SQL 本身运行速度也很慢。但是,由于 SQL 是由 Microstrategy 生成的,我们对 SQL 没有太多的控制权。

关于我们应该看哪里的任何想法?

4

4 回答 4

2

查看 SQL,看看是否可以添加更多有用的索引。检查查询是否使用了您认为应该使用的索引。

于 2014-03-04T16:41:40.653 回答
1

检查过滤的每一列是否都有索引。记住要更新所有涉及的表的统计信息:表这么大,这非常重要。查看查询计划并检查大型表是否没有表扫描(您可以在小型查找表上接受它们)

于 2015-07-03T11:35:24.940 回答
0

EnableDescribeParam=1在 ODBC 驱动程序中

于 2016-12-15T12:37:57.447 回答
-1

如果您的环境和我的一样,那么我将提供的内容可能会对您的要求有所帮助,否则可能对其他人有所帮助。我们也有这样的表,经过数周尝试添加此索引或索引后,最终解决方案是在表和索引级别设置并行。

报告运行时 25 分钟更改表 TABLE_NAME 并行(4 级实例 4);更改索引 INDEX_NAME 并行(度 4 实例 4);

报告运行时间 6 秒。

有一个标准可以对表进行并行设置,例如必须大于 1G,但要使用并行线程以获得最佳时间。

于 2016-08-11T14:20:07.593 回答