问题标签 [sqlperformance]
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 - SQL 查询大约需要 10 - 20 分钟
我有一个选择(没什么复杂的)
这个视图有大约 6000 条记录和大约 40 列。它来自 Lotus Notes SQL 数据库。所以我的 ODBC 驱动是 LotusNotesSQL 驱动。该查询大约需要 30 秒才能执行。我工作的公司使用EXCEL运行查询并将所有内容写入工作表。由于我假设它会逐个单元格地写入所有内容,因此过去最多需要 30 到 40 分钟才能完成。
然后我使用了 MS 访问。我在 Access 上创建了一个副本本地表来存储数据。我的第一次尝试是
请注意,这是伪代码。这运行成功,但又花费了 20 到 30 分钟。然后我使用 VBA 循环遍历数据并为每个单独的记录手动插入(使用 INSERT 语句)。这大约需要 10 到 15 分钟。这是我迄今为止最好的情况。
之后我需要做什么: 我有数据后,我需要按部门过滤它。问题是如果我在 SQL 查询中放置一个 where 子句(执行查询的时间从 30 秒跳到大约 10 分钟 + 写入本地表/excel 的时间)。我不知道为什么。可能是因为这些列都是文本列?
如果我们将某些列更改为整数,是否会使其在 where 子句方面更快?
我正在寻找有关如何解决此问题的建议。我的老板说我们可以采用一些基于 Java 的解决方案。这会有帮助吗?我不是 java 人,而是 ac#,也许我会说服他们也使用 c#,但我主要是在寻找有关如何减少时间的建议。我已经将它从 40 分钟缩短到 10 分钟,但希望它在 2 分钟以内。
回顾一下:
查询大约需要 30 秒才能执行
在 Excel/Access 中本地使用查询大约需要 15 - 40 分钟
需要不到 2 分钟
可以使用基于 java 的解决方案
您可能会建议其他解决方案而不是 java。
sql-server - LINQ-to-Entities 摆脱 sp_executesql
我现在正在尝试使用Database Engine Tuning Advisor优化我的数据库,而我面临的问题是我的 SQL Profiler 跟踪显示了大量使用执行的查询sp_executesql
- 而顾问无法处理这些查询。这些查询似乎来自我正在使用的 LINQ-to-Entities,所以只是好奇是否有任何方法可以让 LINQ-to-Entities 直接调用语句。
sql-server - 如何存储查询执行计划以便以后使用
我的应用程序针对 sql server 数据库运行查询。
在许多情况下,我可以看到执行计划的好处:例如,我第一次单击按钮
第一次需要 15 秒,以后需要 8 秒。
编辑:我使用参数化查询。
所以我第二次提高了 7 秒。
现在,当我再次运行应用程序时(所以我进行了新的数据库连接),第一次需要 15 秒,第二次需要 7...
怎么可能告诉 SQL Server 存储执行计划,至少在同一天记住它们?或者,我怎样才能从已经计算好的执行计划中获益?如果不同的用户运行相同的查询,这是告诉 sql server 足够聪明以使用相同的执行计划的一种方式,即使在这种情况下 IdUser 可能会有所不同。
在软件中我有一些参数,所以可能下次执行查询会有不同的MinDate和MaxDate,但这会影响查询计划吗?
mysql - MySQL中键、主键、唯一键和索引的区别
什么时候应该使用KEY
,PRIMARY KEY
和?UNIQUE KEY
INDEX
sql - sql 查询的哪些方面相对而言是相对昂贵的?加入?记录数?列选择?
SELECT One, Two, Three 与 SELECT One, Two, Three, ..... N-Column 相比的成本有多大
如果您有一个将两个或三个表连接在一起并检索 100 行数据的 sql 查询,那么性能是否说明我是否应该只选择我需要的列数?或者我应该写一个查询,只是拉出所有的列..
如果可能的话,您能否帮助我了解查询的哪些方面相对而言成本相对较高?是联接吗?是拉的大量记录吗?是选择语句中的列数吗?
1 条记录 vs 10 条记录 vs 100 条记录重要吗?
sql-server - 将数据集与 EXCEPT 组合与在 LEFT JOIN 中检查 IS NULL
我目前正在通过Microsoft SQL Server 2008 - 数据库开发(MCTS 考试 70-433)认证。在有关组合数据集的早期章节之一中,我遇到了EXCEPT
(and INTERSECT
) 命令。一个示例显示了如何使用EXCEPT
从一个表中获取所有值,而这些值在第二个表中没有相关值,如下所示:
该EXCEPT
命令对我来说是新的,但是根据我今天之前所知道的,我仍然可以使用 a 轻松解决问题并通过以下方式LEFT JOIN
检查连接约束:IS NULL
现在我开始想知道其中哪一个性能最好。我试图研究查询执行计划,但我不太擅长阅读这些计划,所以这并没有让我变得更聪明。对于使用 的查询EXCEPT
,计划如下所示:
对于使用它的人来说,LEFT JOIN
它看起来像这样:
查询中使用的表来自AdventureWorksDW2008示例数据库,因此下面我还包括了两个表的创建脚本,以防需要正确回答问题:
第二张表:
这个问题使用了一个非常具体的示例,但我也对有关何时/是否适合使用EXCEPT
而不是 aLEFT JOIN
和检查的一般信息感兴趣IS NULL
。
我还注意到,如果我尝试使用 运行第一个查询INTERCEPT
,则第二个查询中的等效项将是使用标准JOIN
and SELECT DISTINCT DimEmployee.EmployeeKey
(并且根本没有WHERE
子句)。然而,在这种情况下,两种情况下的执行计划完全相同。
更新
对第二个查询的次要更新(请参阅修订历史),这导致该查询计划更加复杂。我猜想一个更大的查询计划表明一个不太理想的查询,但我仍然希望这个问题得到回答。
sql - SQL Server 2000 性能问题 - 大表
拥有一个快速接近 1100 万条记录的大表。(表中有 20 列)。
我的问题是,是否存在我应该根据表中的行数考虑的性能问题?
干杯
postgresql - 优化多个 OR 查询
我有一个数据库表,我需要验证用户是否输入了相同或部分相同的信息。
这就是我的想法
数据库布局
查询
如果任何数据匹配(是的,这将是误报),我需要旧的 rec_id。
想知道是否有更好的方法来做到这一点?
谢谢
mysql - 将列从一个表添加到另一个表的正确 MySQL 方法
我有一个大表(约 1000 万条记录),其中包含其他较小表的几个键。每个较小的表中的键都是唯一的,但在大表中却不是。我想根据键匹配从一个较小的表中向大表中添加一列,但我不确定这样做的“正确”方法。我有一个可行的解决方案,但它需要相当长的时间(认为这可能是不可避免的),而且通常感觉这不是最佳的方法。这是我所拥有的:
这完成了工作,但它真的闻起来像我做错了。似乎至少我不需要创建表的副本来完成这项工作。有没有更直接(更有效?)的方式来做到这一点?
值得一提的是,这是针对家庭中的个人爱好项目,因此我可以随意占用机器的所有资源(因为我是唯一使用它的人)。因此,如果有任何直接的性能调整技巧可以做这样的事情,我将不胜感激(我正在 Amazon EC2 实例上对此进行试验,因为它应该比我的个人桌面更快并且具有更多内存) .
sql - SQL 中的 Join 语句性能
我正在使用 SQL Server 2008-R2,我需要使用多个表连接。在这种情况下,当使用 WHERE 语句或将 INNER JOIN 与 ON 语句一起使用时,哪个查询具有更好的时间性能?两个语句都对多个条件使用 AND 运算符。
我想知道该问题是否还有一些相关的查询调整。
上述选项的示例代码:
1)
2)
德克萨斯州。