问题标签 [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 回答
4857 浏览

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

更新:我提出了在未来版本的 EF 中实施提示控制的建议。去这里投票吧。

我有一个问题,我的一个实体框架 (EF) 查询在 Sql Server 中执行需要很长时间,尽管当我将生成的 TSQL 复制并粘贴到 Sql Server Management Studio (SSMS) 中时,它运行得非常快。经过一番调查,我发现我遇到了参数嗅探问题,修复它的正确方法是插入许多查询提示之一(OPTIMIZE FOR、RECOMPILE 等)。如何将这些提示插入到我的 EF 查询中?

来自不同角度的相关问题在这里这里这里

0 投票
1 回答
1081 浏览

sql-server - 我可以在执行之前修改Entity Framework生成的sql吗?

我有一个多租户数据库,根据查询的租户返回不同数量的行。最近我们遇到了一个参数嗅探问题,其中针对一个租户 (TenantID = 1) 执行的实体框架 (EF) 查询比针对另一个租户 (TenantID = 2) 的相同查询花费的时间要长得多。我做了一些研究并确定 EF 不支持查询提示(请参阅此问题),这将允许我每次都强制重新编译查询。现在我想知道是否可以拦截 EF 生成的 Sql 查询并在执行之前手动附加“OPTION (OPTIMIZE FOR UNKNOWN)”。这可能吗?EF 是否可插入,以便我可以在生成的 Sql 执行之前对其进行修改?有没有如何做到这一点的例子?

0 投票
1 回答
32714 浏览

database - 使用 Oracle 提示“FIRST_ROWS”提高 Oracle 数据库性能

我有一个在 Oracle 数据库服务器上运行的语句。该语句有大约 5 个连接,那里没有什么异常。它看起来很像下面:

问题(有趣的是)是 userid = 1 的语句需要 1 秒才能返回 590 条记录。userid = 2 的语句需要大约 30 秒才能返回 70 条记录。

我不明白为什么差异如此之大。

似乎为 userid = 1 的语句选择了不同的执行计划,而为 userid = 2 选择了不同的执行计划。

在我实施 Oracle Hint FIRST_ROW 后,性能明显提高。两个语句(对于 id 1 和 2)都在 1 秒内产生返回。

问题:

  1. 当 userid = 2(不使用提示时)时性能不佳的可能原因是什么?
  2. 为什么一个语句和另一个语句的执行计划会不同(不使用提示时)?
  3. 在决定将此提示添加到我的查询时,我应该注意什么?
0 投票
0 回答
339 浏览

mysql - MySQL 锁定提示和查询优化

我需要在共享模式下锁定一个完整的表。如果我执行诸如“select 1 from (select * from mytable lock in share mode) t where 1=2”之类的东西,查询优化器会删除嵌套子查询并基本上使查询变为无操作吗?在我的简单实验中,它没有(这是我需要的)。我想知道这是否是设计上的预期,而不仅仅是意外。锁定完整表的任何其他替代方法?注意:我不能使用“LOCK TABLE READ”,因为它似乎无法在不先释放它的情况下升级为 WRITE 锁。

MySQL 版本:5.1.50 和 5.5.27。

0 投票
1 回答
771 浏览

sql-server - 使用连接提示优化 SQL Server 查询

我们的系统中有一个查询,它使用的逻辑读取量存在问题。查询经常运行(一天几次),但它本质上是报告(即收集数据,它不是事务性的)。

在让几个人看过之后,我们正在考虑几个不同的选择。

  1. 使用 OPTION (FORCE ORDER) 和一些 MERGE JOIN 提示让优化器更有效地处理数据(至少在已测试的数据上)。

  2. 使用临时表来分解查询,这样优化器就不会处理非常大的查询,从而可以更有效地处理它。

我们真的没有选择进行重大模式更改或任何事情,调整查询是这个问题的集合点。

查询提示选项的性能比其他选项好一点,但在这一点上,这两个选项的性能都是可以接受的。

那么问题来了,你更喜欢哪一个?查询提示被认为有点危险,因为我们正在覆盖优化器等。临时表解决方案需要写出到 tempdb 等。

过去,我们已经能够在较大的报告查询中使用临时表来获得巨大的性能提升,但这通常是针对运行频率低于此查询的查询。

0 投票
1 回答
6244 浏览

sql - 插入数据时使用 Rowlock 有帮助..?

将数据插入表时,我想在 sql server 中使用 ROWLOCK 选项。它是否有任何帮助。它会帮助我减少数据库中的阻塞吗?

0 投票
1 回答
656 浏览

sql-server-2008 - with(updlock) 会减少选择查询中的死锁吗?

我们的 SQL Server 2008 DB(正常隔离级别)中有同时写入和读取的表。

一位同事想知道在针对该表的选择查询上使用(updlock)的查询提示是否会减少死锁,但我不太确定该怎么做。

我在想,如果正常的共享读锁会导致超时,那么在这种情况下,更新锁肯定也会导致死锁吗?!还是我错过了什么?

谢谢大家!

0 投票
2 回答
289 浏览

sql - 使用 top 属性查询更快

为什么此查询在 SQL Server 2008 R2(版本 10.50.2806.0)中更快

然后

?

具有该TOP属性的第二条语句快六倍。

内部count(*)子查询的 9280 行。

我可以使用提示声明 SQL Server 优化器使其正确吗? 执行计划

0 投票
1 回答
1613 浏览

oracle - SQL Developer 剥离内联提示

我正在使用 SQL Developer 3.1.07。我向 Oracle 运行了一个带有内联提示的查询,--+ hint但 SQL Developer 似乎在将提示提交到数据库之前已经剥离了提示。多行提示/*+ hint */没有被剥离。是否有在 SQL Developer 中保留内联提示/注释的选项?

0 投票
1 回答
3243 浏览

sql - 为什么 SQL 会忽略索引提示并选择不同的索引?

给定一个有两个索引的表,一个从另一个反向排序并给出这两个查询。

我在 SQL Server 2008 中遇到过忽略提示的情况,并且在这两种情况下IV_Sort_Desc都使用索引而不是第一个。

我意识到很多人会立即建议不要提供提示,但是鉴于我的具体情况,这不是一个选择。

什么会导致这种情况,我能做些什么来解决它?您肯定希望 SQL Server 遵守索引提示而不使用其他提示吗?