问题标签 [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.
sql-server - 何时使用 OPTIMIZE FOR UNKNOWN 的经验
我已经阅读了 SQL Server 2008 的“OPTIMIZE FOR UNKNOWN”查询计划选项背后的理论和观点。我明白它做得很好。
我做了一些有限的实验,发现使用暖缓存,它只对 > 100k 行有用。然而,这是在一个简单的表和查询上,没有连接、过滤等。在冷缓存上,情况无疑会更有利。
我目前没有生产系统来调整之前/之后。所以我很好奇是否有人在测试之前/之后做过任何有用的发现,以确定何时使用此选项以及何时不使用。
更新:
我创建了一个包含 3 个列、UID 上的 PK 和 Col2 (int) 上的索引的表。所有处理都针对 Col2。指示的是行数和时间 (DATEDIFF * 1000000):
sql - optimize for and recompile hint in Oracle?
Is there any hints in Oracle that works the same way as these SQL Server hints?
Recompile: That a query is recompiled every time it's run (if execution plans should vary greatly depending on parameters). Would this be best compared to cursor_sharing in Oracle?
Optimize for: When you want the plan to get optimized for a certain parameter even if a different one is used the first time the SQL is run? I guess maybe could be helped with cursor_sharing as well?
sql-server - 让 SQL Server 使用索引查找 + 键查找而不是聚集索引扫描,而不使用 WITH (FORCEEK)
版本:SQL Server 2008 R2
数据库:来自http://msftdbprodsamples.codeplex.com/releases/view/55926的 AdventureWorks 2008R2
询问:
在没有任何查询提示的情况下,SQL Server 将使用聚集索引扫描,这是 IO 密集型的:
使用WITH (FORCESEEK)
查询提示,SQL Server 将选择索引查找 + 键查找,完成速度更快,对 IO 友好 500 倍:
我的问题是,有没有办法让 SQL Server 在没有任何查询提示的情况下使用更好的计划?也许添加索引?还是更改配置参数?还是 SQL Server 的查询优化器那么笨?
这是来自http://msdn.microsoft.com/en-us/library/bb510478.aspx的宝石:
当查询使用 IN 或 LIKE 作为搜索谓词时,查询优化器规则和较差的基数估计也会导致优化器执行表或索引扫描操作而不是索引查找。
oracle - Oracle 多插入语句
在我的应用程序中,我必须添加许多记录。我正在使用以下构造:
我也在使用 APPEND 和 PARALLEL 提示。请注意,我在两个不同的表中插入数据。似乎并行被忽略了(DBA 告诉我)。那么我怎么知道它是否被使用呢?是否可以在这样的构造中使用 PARALLEL 提示?它有效吗?
sql - 在 sql 查询中使用“提示”
对不起,如果我听起来很傻,但我没有长时间使用 sql 提示,我正在为学校复习一些章节复习工作。我很难把头缠在他们身上。
例如,我在 oracle 中对我所做的测试数据库提出的一个问题是“显示每日拍卖总数的前 10%。我的答案是(有效):
我现在遇到的问题是,它说,我尝试用不同的查询来实现这个输出,我问了我的老师,他们说他们的意思是使用提示,我查看了我对他们的笔记,它确实没有没有足够彻底地解释如何使用提示优化此查询,或者以更简单的方式进行。
任何帮助将不胜感激
=)谢谢大家!
sql-server - SELECT TOP 很慢,不管 ORDER BY
我在针对视图运行的 SQL Server 中有一个相当复杂的查询,格式如下:
如上所示的查询计划显示了Sort
在 final 之前的操作SELECT
,这是我所期望的。只有 35 条匹配记录,查询时间不到 2 秒。
但如果我添加TOP 30
,查询需要将近 3 分钟!使用SET ROWCOUNT
同样缓慢。
查看查询计划,现在似乎在连接和过滤器myview
之前对所有 2+ 百万条记录进行了排序。
这种“排序”在查询计划中显示为索引上的索引扫描、sortcode
主表上的聚集索引查找以及它们之间的嵌套循环,所有这些都在连接和过滤器之前。
我怎样才能强制 SQL Server 到SORT
just before TOP
,就像TOP
未指定时一样?
我不认为构造myview
是问题,但以防万一,它是这样的:
本地mytable
有几千条记录,而mytable
在同一个MSSQL实例中的其他数据库有几百万条记录。两个表在各自的列上都有索引。sortcode
tsql - ADO 事务和 READPAST
我不知道这是否是最好的方法,如果有更好的方法,请发布。
我有一个读取文件并插入记录的应用程序。整个文件在一个事务中处理。
在插入记录之前,需要检查表是否存在重复项(注意:我不能将其设为表约束,因为存在异常)
所以重复检查是一个正常的select语句,但问题是,它从当前事务中读取了未提交的记录。我在 select 语句中包含了 READPAST 和 READCOMMITTED 提示,但仍然返回记录。
有任何想法吗?
sql - Oracle 利用 DMS 中的并行执行(即 UPDATE 查询)
正如您在此链接中看到的那样,有时在PARALLEL HINT
更新查询的并行执行中不起作用。
对于 select 我什至必须强制 aFULL TABLE SCAN
或 a FAST FULL INDEX SCAN
。DML 语句是如何工作的?
我使用了指令alter session enable parallel dml;
如果您查看链接主题的IO。只有一个线程正在读取/更改。
eclipselink - EclipseLink 表达式困境
我正在尝试使用 EclipseLink 表达式,因为我发现动态组合查询条件非常方便。但这必须与 ReadAllQuery 一起使用,它没有 QueryHint(用于批处理)选项,这是我的应用程序必须的。
另一方面,要使用具有此提示功能的 JPA Query,您必须放弃 EclipseLink 表达式工具。
EclipseLink Expression 和 QueryHint 串联使用的方法是什么?
似乎 ReadAllQuery 有几个相关的方法来设置获取选项,但是如果你用谷歌搜索它,你只能从存储库中找到源代码。