问题标签 [query-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 投票
2 回答
823 浏览

sql-server-2008 - TSQL优化多个Intersect

问题查询使用多个 Intersect。

通过 count() = 6 将其更改为 in ('alpha','beta','gamma','delta','epsilon','phi') 组不是一个选项,因为应用程序支持通配符(例如 alpha%)。但是 count() = 6 查询运行时间不到 1 秒。

使用通配符可以使用多个连接,这就是它过去的结构。在 4 或更少时,Intersect 的性能优于多个连接,但不幸的是没有在 5 或更多时进行测试。

查询在任何 4 个术语上都表现出色 - 不到 1 秒。
从字面上看,任何 4 - 前 4、最后 4 或中间 4。
在 5 或更多然后它死了 - 我在 2 分钟时终止了查询。
让它运行 6 个术语 - 5 分钟返回 795 行。

查询计划将循环与合并连接最多混合使用 4 个术语。
在 5 个或更多术语时,查询计划是所有循环连接。
是否有将查询提示应用于相交的语法?

使用 () () 尝试了两组 3 组,但这并没有改变查询计划。

认为我有一个修复

查询优化器在 5 或更多时仍然变得愚蠢,但这会强制第一个连接成为合并并保存它。

0 投票
2 回答
745 浏览

sql-server - Sql Server 2014 的“Hekaton”编译存储过程是否解决了参数嗅探问题?

SQL Server 2014 的“Hekaton”内存表优化宣称,“存储过程中业务逻辑的本机编译”。然而,由于 SQL Server 2012 及更早版本中的“参数嗅探”(请参阅​​此处此处)存在问题,我一直被迫使用OPTIMIZE FOR UNKNOWN(或其等效项)设计大部分存储过程。这有效地防止了查询计划被缓存,并强制 SQL Server 在每次运行时重新编译/重新优化查询。Hekaton 的大部分性能提升来自于本机编译查询的重用,SQL Server 2014 是否可以解决参数嗅探问题,以便我可以实际使用编译查询?

0 投票
1 回答
2771 浏览

sql - Oracle SQL 忽略有序索引提示

我有以下带有指定有序索引提示的查询。我想知道我是否做错了什么,使它忽略了我的有序索引提示。

解释计划如下:

我希望它从 pay_assignment_actions 表转到 pay_run_results 表,但它先去那里并对其进行全表扫描;完全无视我的暗示,表现糟糕。有人知道为什么或如何解决这个问题吗?

0 投票
1 回答
510 浏览

mongodb - 如何从查询中排除 mongo 索引?

有谁知道在 MongoDB 中运行查询并指定使用命名索引的方法?

我们的数据有多个索引,并且在某些情况下,mongo 对使用哪个索引来满足某些类型的查询做出了糟糕的选择。但我们不一定要声明使用特定索引。只有我们知道哪一个绝对是一个糟糕的选择。

使用命名索引很容易:

排除命名索引可能如下所示:

任何见解都值得赞赏。

0 投票
1 回答
357 浏览

mongodb - MongoDB 索引在 find all 上的使用没有提示

我有一个关于如何正确编写索引以避免求助于提示的问题。

示例“测试”集合架构

“测试”索引

不带提示的查询和带提示的查询...

我(显然)希望查询使用覆盖的索引,但我不知道如何在不使用提示的情况下到达那里。可能吗?我更喜欢操纵索引而不是更改查询,但如果需要,更改查询是一种选择。

0 投票
6 回答
255109 浏览

sql - 选项(重新编译)总是更快;为什么?

我遇到了一个奇怪的情况,附加OPTION (RECOMPILE)到我的查询会导致它在半秒内运行,而省略它会导致查询花费超过五分钟。

当从查询分析器或我的 C# 程序通过SqlCommand.ExecuteReader(). 打电话(或不打电话)DBCC FREEPROCCACHEDBCC dropcleanbuffers没有区别;查询结果总是会在OPTION (RECOMPILE)超过五分钟后立即返回。始终使用相同的参数调用查询 [为了这个测试]。

我正在使用 SQL Server 2008。

我对编写 SQL 相当满意,但以前从未OPTION在查询中使用过命令,并且在浏览此论坛上的帖子之前对计划缓存的整个概念并不熟悉。我从帖子中了解到这OPTION (RECOMPILE)是一项昂贵的操作。它显然为查询创建了一个新的查找策略。那么,为什么省略 的后续查询OPTION (RECOMPILE)如此缓慢呢?后续查询不应该使用在先前调用中计算的包含重新编译提示的查找策略吗?

每次调用都需要重新编译提示的查询是不是很不寻常?

对不起,入门级的问题,但我真的不能做出正面或反面。

更新:我被要求发布查询...

从查询分析器运行测试时,我在前面加上以下几行:

从我的 C# 程序调用它时,参数是通过SqlCommand.Parameters属性传入的。

出于本讨论的目的,您可以假设参数永远不会改变,因此我们可以排除次优参数异味的原因。

0 投票
1 回答
378 浏览

sql-server - 在 FOR XML 上使用查询提示

有谁知道如何将查询提示与“FOR XML”语句一起使用?我的(子)查询如下所示:

当我添加

我收到语法错误...

谢谢

0 投票
1 回答
1693 浏览

jpa - 将 @FetchGroup 与 eclipseLink 一起使用

我已尝试按照http://eclipse.org/eclipselink/documentation/2.4/jpa/extensions/a_fetchgroup.htm中的说明让源代码运行

可悲的是,它以“需要实现 FetchGroupTracker”而告终。

我不知道这是真的还是我错过了什么。有人知道我在哪里可以找到它的样品吗?

0 投票
1 回答
494 浏览

sql-server - 查询优化器无法将谓词推送过去汇总?提示也不起作用

这是架构:

在此处输入图像描述

这是据我所知对于 SQL Optimizer 来说太复杂的 sql:

SQLFIDDLE:http ://sqlfiddle.com/#!6/aa74e/11 (带有自动生成的数据)

我的期望:执行计划应该包含 x.PaymentPartId 上的索引搜索。为什么?因为这个查询相当于:

...最后一个查询使用索引搜索。

但是 SQL Optimizer 不仅拒绝使用索引,而且忽略所有提示(我建议你用 sqlfiddle 过期 - 这真的很有趣)。

所以问题是:强制 SQL Server Optimizer 在那里使用索引搜索是不可能的,我说得对吗? 似乎汇总是将 sql 优化器“优化框架”拆分为两部分的东西,它使得优化整个查询成为不可能。

PS对于那些投票关闭这个“非编程问题”的人:尝试放置优化器提示(sqlfiddle已准备好测试您的编程技能!)。

0 投票
2 回答
7689 浏览

sql-server - 调用表值函数时添加查询提示

我正在从实体框架调用一个表值函数,并且需要能够添加option (recompile)它,因为它选择的执行计划不是最优的。在 SQL Server Management Studio 中运行查询,它看起来像这样:

来自 EF,没有办法添加该提示,AFAIK。EF 部分看起来像:

我看到了这个问题:

如何控制实体框架中的参数嗅探和/或查询提示?

但它已经过时了,并且公认的解决方案并没有真正提供足够的信息来说明如何使用实体框架实际实施建议的解决方案(使用计划指南)。如果这是唯一的解决方案,那么您如何让实体框架使用计划指南?