问题标签 [optimizer-hints]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
289 浏览

oracle - Oracle 风格的执行提示

当您为 Oracle 编写相当复杂的 SQL 时,迟早您将不得不应用奇怪的执行提示,因为 Oracle 似乎无法自己找出“最佳”执行计划。

http://download.oracle.com/docs/cd/B19306_01/server.102/b14211/hintsref.htm

现在这肯定不是 SQL 标准。但是,我仍然想知道,是否有任何其他 RDBMS 支持这些类型的提示,我的意思是“嵌入”在 SQL 中的提示?它们在句法上是否相似(即也位于SELECT关键字和第一个 selected之间COLUMN)?您知道比较各种 RDBMS 中的提示的通用文档页面吗?

注意:我对这些 RDBMS 最感兴趣:Postgres、MySQL、HSQLDB、H2、Derby、SQLite、DB2、Sybase、SQL Server

0 投票
2 回答
115 浏览

c++ - 如何更快地编译和启动 VSC++ 项目?

您使用什么技术来快速编译和启动 VSC++ 项目?

对我们来说,尤其是所有 dll 的加载需要很长时间。有没有办法加快这个速度?该项目加载了大量的.dll,其中一些特别慢。

现在我们为我们的项目使用统一构建,它已经编译得非常快!=)

谢谢!

0 投票
2 回答
210 浏览

sql - 使 Oracle SQL 优化器相信索引列(尽管非唯一)实际上包含唯一值

我正在编写一个使用带有非UNIQUE索引列的视图。但是,在我的观点范围内,我相信该列将仅包含唯一值(由于该WHERE子句中施加的条件)。

当有人基于该列(例如SELECT * FROM MY_VIEW WHERE COLUMN_WITH_NON_UNIQUE_INDEX = 'foo')查询视图时,就会出现真正的问题。优化器确信它将接收许多行(因为索引在技术上不是UNIQUE)。因此,优化器避免在视图中的其他位置使用其他索引以支持全表扫描(不酷)。

有没有办法让优化器相信具有非UNIQUE索引的列实际上将包含唯一值?当然,重复值可能会潜入列中,但这将被视为错误,不应导致合法的唯一数据受到影响。

不幸的是,我无法控制有问题的桌子(叹气)。

0 投票
2 回答
5911 浏览

sql - SQL 语句中过程的并行执行 (Oracle 11g)

我有一个 SQL 语句,它使用一个Check-Function需要很长时间才能执行的语句。

现在我想并行化 的执行Check-Function,但它不起作用。

我犯的错误在哪里?

下面的示例需要 5 秒来执行,但据我了解,由于并行性,它应该需要大约 1 秒。

测试代码片段:

0 投票
3 回答
3881 浏览

oracle - 是否有以特定顺序执行 where 子句的 oracle 提示?

考虑对 datecolumn 进行索引的表上的以下两个查询 -

Q1 使用索引。但是,Q2 以某种方式进行了全表扫描。是因为 oracle 以某种方式选择先执行“datecolumn < sysdate - 1”吗?在这种情况下,有没有办法强制执行涉及一列的 where 子句的执行顺序?

0 投票
1 回答
3673 浏览

oracle - Oracle 11g INDEX_SS 提示

给定一个包含 CHAR(15) 类型的 A、B 和 C 列和唯一索引的表

如果我有一个带有指定 A 和 C 的 WHERE 子句的查询,oracle 的优化器会选择执行索引范围扫描。但是如果我知道 B 的基数很低,我应该提示 oracle 使用索引跳过扫描吗?跳过非前导列(在本例中为 B)是否会比范围扫描更高效?跳过扫描会跳过索引中的 A 和 B,还是只跳过 B?

0 投票
2 回答
1412 浏览

oracle10g - 由于静态优化器策略,Oracle SQL 策略用于慢速参数化/过滤查询

比下面更简单地说:如果一个有一个或多个查询参数,例如x_id,(或报告/表函数参数),这些参数对性能至关重要(例如可以使用一些主键索引)并且它可能是(取决于用例/report 已应用过滤器,...) 其中之一

  • null
  • 完全匹配(例如一些唯一的id)
  • 类似的表达
  • 甚至是正则表达式

那么如果所有这些可能性都编码在一个查询中,我只会看到并知道优化器

  • 生成唯一的静态计划,独立于实际参数runtime-value
  • 因此不能假设使用一些索引x_id尽管它可能是例如一些完全匹配

除了_ _

  1. 让一些 PL/SQL 代码从n预定义和用例优化的查询/视图中进行选择?
    • 一个人拥有的灵活参数越多,它就越大
  2. 还是一些手动字符串构造和动态编译的查询?

基本上,我有两个略有不同的用例/问题,如下所示和可执行文件:

一个-select * from tf_sel

-select * from data_union

这可能会通过SQL 提示或使用其他技巧来解决。

为了加快这些查询的速度,我目前在某个实现级别(表函数)上分离“合并查询” ,这非常麻烦且难以维护,但确保查询由于其更好的执行计划而运行得非常快。

正如我所看到的,主要问题似乎是优化器 sql 计划的静态性质,如果它考虑一些“查询时间常数”过滤器参数,它可能会更有效,但它总是相同的。


这是对 jonearles 提供的示例代码和答案的评论

实际上,您的答案是我的(尽管在某些情况下一起出现但不相关)用例 A 和 B 的混合。尽管您提到优化器具有动态FILTER功能和其他功能仍然很重要。

用例 B(“数据分区/组联合”)

实际上用例 B(基于您的示例表)看起来更像这样,但我仍然需要检查实际场景中的性能问题。也许您已经看到了一些问题?

用例 A(按列查询类型过滤)

根据您的示例表,这更像是我想做的。正如您所看到的,只有 fast 的查询where p.ft_id = 'eq' and x.indexed_val = p.val显示了索引使用情况,但是在where子句中使用所有不同的过滤器选项将导致计划切换始终使用全表扫描:-/:p_filter_type( 即使我:p_indexed_val_filter在SQL 不仅仅是我把它放在一个地方,它不会改变。)

0 投票
2 回答
5812 浏览

oracle - 如何在 Oracle 中通过索引 rowid 强制访问?

我需要帮助强制 Oracle 始终通过表 "r_rapport" (~60k 行) 上的索引行 id 使用表访问,以随后避免对 "r_attributfeld" (~8m 行) 进行全表扫描。我有一个查询导致以下计划:

通过添加 FIRST_ROWS(1) 提示,这将更改为更理想的计划:

不幸的是,这个查询是在运行时组成的,如果这里有三个子请求而不是两个,它将忽略 FIRST_ROWS 提示并再次对 800 万行进行多次全表扫描。通过 rowid 访问给定的数据分布总是更快(几乎是即时的),而 Oracle 喜欢的计划需要几秒钟。

在发现这些已被弃用之前,我尝试在两个表上使用 ROWID 提示。

任何指针将不胜感激。

=编辑=

USE_NL 和新索引

SQL:

及其计划:

当这个查询立即完成时,一个可怕的、可怕的成本估算。

0 投票
1 回答
72 浏览

java - 生成代码的 Netbeans 代码提示

最近,我的 NetBeans 向我展示了大量的代码黄色提示,这些提示是 NetBeans 在为我创建 GUI 时自动生成的。有没有办法,如何摆脱它,因为我显然不能简单地更改自动生成的代码。

我假设新版本的 Java 支持一些新的代码优化。NetBeans 代码检查器能够检测到它们,而它的 GUI Builder 有点过时了,无法跟上这些。我有NetBeans IDE 8.0.2(内部版本 201411181905),一切似乎都是最新的。

我能做点什么吗?或者到目前为止我必须接受这些提示吗?或者禁用它们以停止打扰我......

0 投票
1 回答
649 浏览

sql - oracle 提示中的默认并行度

我使用默认的并行度来获得性能调整,我也得到了最好的结果。但我怀疑当其他一些工作同时访问同一张表时它会产生影响。

下面的示例代码。

可用的服务器数量为 8 。这种默认的并行度是如何工作的?如果其他作业同时在同一张表上运行查询,它会影响吗?在将此查询移至生产环境之前,我想知道这是否会产生影响?谢谢!