问题标签 [database-tuning-advisor]
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 - 在 select 子句中包含 nvarchar(max) 列会显着增加执行时间
我有一个由列和索引组成的简单表,如下所示。
这是我根据 sql 数据库引擎优化顾问的建议创建的索引。它包括所有列。
每当我添加在图片 1 中检查的列时,执行时间都会严重增加。这是我的测试结果。
如果我不包括上述列。
(受影响的 54 行)表“PROPOSAL_PROCESS”。扫描计数 1,逻辑读取 58,物理读取 2,预读读取 55,lob 逻辑读取 0,lob 物理读取 0,lob 预读读取 0。
(1 行受影响)
SQL Server 执行时间: CPU 时间 = 31 毫秒,经过时间 = 16 毫秒。 SQL Server 解析和编译时间: CPU 时间 = 0 毫秒,运行时间 = 0 毫秒。
SQL Server 执行时间:CPU 时间 = 0 毫秒,经过时间 = 0 毫秒。
如果我将 CURRENT_PROPOSAL_OBJECT 添加到先前查询的选择子句
(受影响的 54 行)表“PROPOSAL_PROCESS”。扫描计数 1,逻辑读取 58,物理读取 2,预读读取 55,lob 逻辑读取 0,lob 物理读取 0,lob 预读读取 0。
(1 行受影响)
SQL Server 执行时间: CPU 时间 = 0 毫秒,经过时间 = 545 毫秒。 SQL Server 解析和编译时间: CPU 时间 = 0 毫秒,运行时间 = 0 毫秒。
如果我将 INTERFACTORING_XML 添加到先前查询的选择子句
(受影响的 54 行)表“PROPOSAL_PROCESS”。扫描计数 1,逻辑读取 58,物理读取 2,预读读取 55,lob 逻辑读取 1822,lob 物理读取 376,lob 预读读取 0。
(1 行受影响)
SQL Server 执行时间: CPU 时间 = 47 毫秒,经过时间 = 2415 毫秒。 SQL Server 解析和编译时间: CPU 时间 = 0 毫秒,运行时间 = 0 毫秒。
如果我将 CURRENT_PROPOSAL_OBJECT 添加到先前查询的选择子句
(受影响的 54 行)表“PROPOSAL_PROCESS”。扫描计数 1,逻辑读取 58,物理读取 2,预读读取 55,lob 逻辑读取 5048,lob 物理读取 944,lob 预读读取 0。
(1 行受影响)
SQL Server 执行时间: CPU 时间 = 47 毫秒,经过时间 = 6912 毫秒。 SQL Server 解析和编译时间: CPU 时间 = 0 毫秒,运行时间 = 0 毫秒。
所以在一天结束时,我面临着 6912 英里的秒数。这种糟糕表现的原因是什么?
我想创建一些索引吗?这是由于将大尺寸的 nvarchar 放在同一张表中而导致设计不良的结果吗?
提前致谢
编辑:这是重新生成问题的脚本。我试图在 sql-fiddle 上创建相同的问题,但它甚至没有插入一行。
编辑 2:如果我在 select 子句中包含所有列,并且只提供另一个提案 ID 使查询返回 2 行,则执行时间通常保持在 100 毫秒左右。查询执行时间会随着返回行的增加而变得越来越差。否与索引的联系。
sql - Oracle 在实施 SQL Profile 后建议 TABLE ACCESS FULL
我基本上所做的就是使用 SQL Tuning Advisor 进行长查询。它建议我创建和 SQL Profile。创建配置文件后,我检查了查询的性能,没有发现太大差异,因此决定删除配置文件。但是现在,当我检查同一个查询的执行计划(为此我创建并删除了配置文件)时,它显示 Oracle 忽略了所有索引并且只对所有表执行 TABLE ACCESS FULL!你知道为什么会这样吗?
即使我稍微修改查询也会发生这种情况。对于其他查询,Oracle 像以前一样使用索引。
我尝试再次创建和删除配置文件,删除调整任务......但没有区别。
编辑:对不起,我现在检查了过去的执行计划,Oracle 在我对 sql 配置文件进行实验之前也在执行全表扫描。当我无意中改变了一些东西并且不知道是什么时,我错了。感谢您的回答。
mysql - Mysql 5.7 性能调优。存储过程响应时间过长
迁移到新服务器后,Mysql 存储过程花费了太多时间。存储过程花费太多时间来返回结果。我的cnf文件如下
有什么办法可以优化更多。
sql-server - 删除未使用的索引
我指的是未使用的索引脚本博客。
我知道如果Seek = 0
, Scan = 0
, Lookup = 0
,User Update = 0
那么我们应该删除索引,因为它不需要。
未使用的脚本给了我很多索引,但我应该删除所有这些索引吗?您能否帮助我理解从给定脚本中识别实际未使用的索引。
在删除之前,我想知道UserSeek
, UserScans
, UserLookups
,列之间的重要性。UserUpdates
postgresql - 需要 POSTGRES 调优的建议
我需要在我的数据库上频繁运行几个复杂的查询,我的一个查询需要大约 57 秒才能执行,我正在尝试一种调整我的 Postgres 数据库的方法,因此,我可以将执行时间减少一半或比那更多的。
我已经在表格上创建了索引并调整了一些参数,但这对我没有帮助。
我使用的是 Postgres 9.6 版,以下是我用来调整数据库的参数。
- 最大连接数 = 1500
- shared_buffers =8GB
- 有效缓存大小 = 8GB
- 维护工作内存 = 2GB
- checkpoint_completion_target = 0.7
- wal_buffers = 16MB
- default_statistics_target = 100
- random_page_cost = 1.1
- 有效 io_concurrency = 200
- work_mem = 910kB
- min_wal_size = 1GB
- max_wal_size = 4GB
- max_worker_processes = 48
- max_parallel_workers_per_gather = 24
查询如下
以下是查询计划