问题标签 [query-tuning]
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 - 如何避免连接过多?
我希望您能帮助我讨论如何使用通用方法避免过多的连接。对此有一般规则吗?
目前,我有一个非常复杂的查询,它连接了 11 个表,性能很差(即使有索引和更新的统计信息)。使用 Entity Framework Profiler,我收到了减少连接数量的建议,而是执行几个单独的查询:link。
每个连接都需要数据库执行额外的工作,并且查询的复杂性和成本随着每个额外的连接而迅速增长。虽然关系数据库已针对处理连接进行了优化,但执行多个单独的查询通常比执行包含多个连接的单个查询更有效。
我应该如何修改以下示例以获得更好的性能?
sql - 调整返回 REF CURSOR 的 SQL 查询
我在函数中使用引用游标来返回值。这个函数被递归调用不同的输入值。
我的包定义如下。
我的功能如下。
如果我不在游标的 select 语句中使用并行提示,则查询性能非常差,并且对于多个递归调用,查询几乎需要 8 小时到 24 小时,具体取决于数据。
使用并行提示查询的性能得到提高,完成运行需要 1.30 小时。但它需要 250GB 的 TEMPSPACE。
您能否建议我调整此查询的解决方案。
sql - 带有数据加载的计划选择查询在 oracle 中执行缓慢
数据库 - Oracle 11g
我们有一个包含 3000 万条记录的表 TB_ETD_NON_MKTS_TRANS_OP
我们在 REPORTING_PARTY、REPORTING_TIMESTAMP 上有索引。
我们正在执行查询
解释计划输出如下
sql - DB2:使用标量函数提高 SQL 查询的性能
我有一个大查询,我正在尝试进行顶级优化。我想改变的条件之一如下所示。即我正在尝试删除标量函数。
当前的:
至
在检查了解释计划后,我看不到有太大的改进。实际上估计成本从 4532.380859 到 4532.601074
任何建议都会有所帮助。
postgresql-9.4 - PostgreSQL 9.4 查询调优
我有一个运行速度太慢的查询。
该函数sysdate()
返回没有时区的当前系统时间戳,last_day()
返回代表该月最后一天的时间戳。我创建这些是因为 Hibernate 不喜欢 Postgres 转换符号。
问题是规划器在有索引的地方进行全表扫描。以下是上述查询的解释计划:
请注意,规划器选择在最大的表上执行非常昂贵的全表扫描 -ip_address_usage_histories
并且vm_ip_address_histories
. 我尝试将配置参数更改enable_seqscan
为关闭,但这使问题变得更糟,总执行时间达到 63 秒。
以下是上述表格的描述:
Postgres 似乎没有指导计划者的查询提示。我也尝试了 from 子句inner join ... on ...
语法,但这也没有改善。
更新 1
我没有尝试用标准函数替换此函数,因为据我所知,Postgres 没有返回每月第一天的函数。
sql-server - 优化特定表的查询
我有一张桌子,我正在寻找一种方法来提高它的性能。下面是要执行的查询列表。
您能否帮我重写下面的查询并向表中添加索引以提高其性能?
sql - 如何调整以下查询?
这个查询给了我想要的结果,但我不能每次都运行这个查询。这 2 个循环让我付出了代价。所以我需要实现类似视图的东西。但是逻辑涉及临时表,视图中也不允许这样做.so,是否有任何其他方式来存储此结果或更改查询,以减少我的成本。
sql-server - 在 SSMS 中以编程方式检索 SET STATISTICS PROFILE ON 以进行进一步分析
通过 Management Studio 执行 T-SQL 查询时,我可以使用文本格式以漂亮的格式SET STATISTICS PROFILE ON
捕获统计信息和查询执行计划。
如何在执行存储过程后收集查询执行计划,以便以编程方式对其进行分析,而不是在 SSMS“消息”选项卡中进行可视化分析?
我可以使用SET SHOWPLAN_ALL ON
,但我想看到实际计划而不是估计的计划,它有同样的问题:如何自动获得结果?
我也可以从 DMV 获得 XML 计划,但我想知道如何获得文本格式的计划。
我在这里找到了非常相似的帖子,但没有
这是我称之为“漂亮的文本格式”的示例:
|--Nested Loops(Inner Join, OUTER REFERENCES:([AdventureWorks].[Person].[Address].[AddressID]))
|--Filter(WHERE:(STARTUP EXPR(suser_sname()=CONVERT_IMPLICIT(nvarchar(4000),[@2],0))))
| |--Index Scan(OBJECT:([AdventureWorks].[Person].[Address].[IX_Address_StateProvinceID]))
|--Clustered Index Seek(OBJECT:([AdventureWorks].[Person].[Address].[PK_Address_AddressID]), SEEK:([AdventureWorks].[Person].[Address].[AddressID]=[AdventureWorks].[Person].[Address].[AddressID]), WHERE:([AdventureWorks].[Person].[Address].[City]=N'Snohomish') LOOKUP ORDERED FORWARD)
oracle - 如何调整使用 DBLINK 的查询
我担心的是,我有一个远程视图 abc@DBLINK 和一个本地表 xyz。我需要映射一个远程视图和一个本地表,并从 abc@DBLINK 视图中获取少量数据并插入到其他一些本地表中,比如 pst。IE
有人可以向我提供任何建议,我可以如何更快地完成这项任务?请注意 abc@DBLINK 包含大量数据,并且索引存在于本地表 col1 和 col2 上。
sql-server - 使用过滤统计的案例
我正在查看以下链接中的过滤统计信息。
http://blogs.msdn.com/b/psssql/archive/2010/09/28/case-of-using-filtered-statistics.aspx
数据严重倾斜,一个区域有 0 行,其余都来自不同的区域。以下是重现该问题的完整代码
我的问题是我们在两张桌子上都有以下统计数据
表区域:
餐桌销售:
1.为什么下面这些查询的估计出错了
2.当我按照作者创建过滤统计信息时,我可以正确看到估计,但是为什么我们需要创建过滤统计信息,我怎么能说我需要过滤统计信息来进行查询,因为即使我创建了简单的统计信息,我也得到了相同的结果。
迄今为止我遇到的最好的 1.Kimberely tripp 歪曲统计视频
2.Technet 统计白皮书
但仍然无法理解为什么过滤的统计数据在这里有所作为
提前致谢。 更新:7/4
在马丁和詹姆斯回答之后改写问题:
1.除了kimberely脚本还有什么方法可以避免数据偏斜
,另一种估计方法是计算一个值的行数。
2.您是否遇到过任何数据偏斜问题。我认为这取决于大表。但我正在寻找一些详细的答案
3.我们必须为 sql 扫描表以及某些阻塞有时会在触发更新统计信息时下降的查询承担 IO 成本。在维护统计信息时,您是否看到除此之外的任何开销。
原因是我也在考虑基于 DTA 输入的几个条件创建过滤统计信息。
再次感谢