问题标签 [query-performance]

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 投票
4 回答
201 浏览

database - 优化 ORACLE 上的查询。尝试索引

我有这个查询,我想通过添加适当的索引来提高它的性能。

我不熟悉索引的语法和它们所需的设置类型。请提供相同的。这里的主要问题是 MYTAB1 有数百万条记录,因此查询需要很多时间。但是,MYTAB2 只有 1000 条记录。MYID1 是 MYTAB1 的主键

我试过创建索引:

它对查询的性能没有太大影响。

我运行了解释计划并得到了这个:

0 投票
2 回答
503 浏览

sql-server-2008-r2 - 子表的正确主键?

员工表中的主键应该是什么?

[编辑] 我们的设置是,员工将始终只属于一家商店。每个员工都应该有一个唯一的 ID(即,即使员工属于不同的商店,他们也不应该有相同的 ID)。

我认为 PK 应该只是 EmployeeID,因为它应该始终是唯一的。我的同事认为 PK 应该与 StoreID+EmployeeID 复合,但是(理论上)可能会有重复的员工 ID。我并不完全遵循他的推理,但他引用的一件事是性能。我不太担心查询性能,因为对于我们的数据库,Employee 表从未超过 5000 条记录。我们确实有其他更大的子表引用 StoreID,这是创建这样一个键的正当理由吗?

[编辑] 如果您还创建了一个仅对 EmployeeID 强制唯一性的内部密钥,那么复合 PK 是否可以?也许有多种方法可以做到这一点,但我想选择最被接受的做法。

0 投票
2 回答
212 浏览

sparql - AllegroGraph 查询计划

是否可以在 AllegroGraph 中查看用于评估 SPARQL 查询的查询执行计划(类似于EXPLAIN)。

0 投票
2 回答
562 浏览

postgresql - 在 postgresql 中预计算用户定义的函数

我正在尝试按行预先计算用户定义的函数。这个想法是我在其中一个字段中将 JSON 对象作为文本对象,并且我想从中解析出一些其他“字段”,这些字段可以像任何其他真实字段一样在查询中返回。但是,解析 JSON 的开销很大。有没有办法以加速查询的方式预先计算这个解析函数?

请不要争辩说首先不应该有 JSON 作为数据库上的文本;我知道利弊。

0 投票
1 回答
152 浏览

php - 查询以获取具有或不具有组连接的多行

我有以下表结构:

所以我需要一个查询来从这些表中获取数据并显示用户的最后 5 个问题以及每个问题的前 3 个答案。像这样的东西:

所以这就是我想要的展示。如何在 1 个查询中执行此操作?我应该使用 group concat 对 1 个问题的多个答案进行分组吗?或者我应该得到结果并在 PHP 中解析数组以按 question_id 对答案进行分组。我也需要这个查询非常快。我不确定是否会更快进行 1 个查询或进行多个查询以获取用户问题,然后问题得到答案。

0 投票
1 回答
205 浏览

sql - 如何提高sql中的查询性能?

我有一张有 2900000 条记录的表。现在我正在使用选择查询来查找数据,它需要 5 秒来获取记录。它只是选择查询,运行它需要 4-5 秒。

我不知道为什么要花这么多时间?

在表中,有 4 个字段是 varchar(Max)。有什么原因有问题吗?

谁能建议我如何减少执行时间?

0 投票
2 回答
888 浏览

mysql - distinct(count(ColumnName)) 上是否需要索引,where 子句上有索引?

我有一张这样的桌子

如果我这样查询:

列上有一个索引OwnedBy。假设表很大,我也应该索引EmailAddress吗?我不担心写性能下降。

0 投票
3 回答
401 浏览

mysql - 带有子选择的 MySQL 查询性能 - 具有数百万行的表

我知道有很多关于 sql 查询性能改进的问题,但是我无法使用这些问题的答案来提高我的查询性能(足够了)。

因为我想要比 rsync 和 fslint 更灵活的东西,所以我编写了一个小型 java 工具,它可以遍历文件树并将路径和校验和存储在 mysql 数据库中。

你会在这里找到我的表结构: http ://code.google.com/p/directory-scanner/source/browse/trunk/sql/create_table.sql - 起初我只有一个表,但后来我想我如果我将多余的很长的目录路径字符串移动到一个单独的位置并使其成为 1:n 关系,可以节省大量空间

我已经定义了这两个索引:

现在困扰我的查询是: http ://code.google.com/p/directory-scanner/source/browse/trunk/sql/reporingQueries.sql

其中最糟糕的是最后一个,它很有可能总是返回一个空集(sha1 冲突和错误地插入了多个文件):

只要我只有 20k 行(在创建索引之后),它在不到一秒钟的时间内就运行得很好,但是现在我有 750k 行,它会运行几个小时,mysql 完全用掉了我的一个 cpu 核心全程。

这个查询的解释给出了这个结果:

我的其他查询对于 750k 行也不快,但至少在 15 分钟或类似的时间内完成(但是,我希望它们也能处理数百万行......)

更新:感谢 radashk 的评论,但您建议的索引似乎是由 mysql 自动创建的 -->

UPDATE2:感谢欧根·瑞克!我认为您的回答可以很好地替代此查询,因为它很可能会返回一个空集,我只会选择数据来显示用户,以便稍后在另一个查询中描述问题。为了让我真的很高兴,如果有人也可以看看我的其他查询,那就太好了:D

UPDATE3:Justin Swanhart 的回答启发了我以下解决方案:与其让查询来检查无意中多次插入的目录和文件,不如创建如下的唯一约束:

但是,我想知道这会对插入语句的性能产生多大的负面影响,有人可以对此发表评论吗?

更新4:

不起作用,因为它太长了..

更新5:

好的,这是我将用于替换我在最初问题中引用的查询的解决方案:

对于第一部分,寻找 sha1 碰撞,我将使用这个:

如果它返回任何内容,我将使用另一个查询 WHERE sha1 = 选择详细信息

我猜这个查询会运行得最好,定义了这个索引:

为了验证不存在重复的目录,我将使用它,因为他不允许约束(参见上面的 UPDATE4):

对于重复的文件,我将尝试创建此约束:

这运行得非常快(15 到 20 秒),我不需要在它之前创建其他索引以使其更快。错误消息还包含我需要向用户显示问题的详细信息(无论如何我都不太可能,因为我在插入之前检查了这些内容)

现在只有 5 个查询可以在更短的时间内执行;)感谢 Eugen 和 Justin 迄今为止的大力帮助!

UPDATE6:好的,所以自从任何人上次回复以来已经有几天了,我只会接受贾斯汀的回答,因为那是对我帮助最大的人。我将我从你们那里学到的东西整合到我的应用程序中,并在此处发布了 0.0.4 版:http ://code.google.com/p/directory-scanner/downloads/detail?name=directory-scanner-0.0.4- jar-with-dependencies.jar

0 投票
1 回答
3843 浏览

sql-server - RowNumber() 和 Partition By 性能需要帮助

我有一张股票市场移动平均值表,我试图在一天内比较两个值,然后将该值与前一天的相同计算值进行比较。我的 sql 如下所示...当我注释掉定义结果集的最后一个 select 语句并运行显示为结果集的最后一个 cte 时,我在大约 15 分钟内取回了我的数据。长,但易于管理,因为它会在一夜之间作为插入 sproc 运行。当我如图所示运行它时,我在任何结果开始出现之前的 40 分钟。有什么想法吗?它从有点慢到爆炸,可能是加上ROW_NUMBER() OVER (PARTITION BY)BTW 我仍在处理逻辑,这在这个性能问题上目前是不可能的。提前致谢..

编辑:我按照下面的建议修复了我的分区。

0 投票
1 回答
261 浏览

sql-server - 临时表索引/性能帮助请求

这是我之前的帖子的延续:RowNumber() and Partition By performance help Wanted

我有一个需要显着提高性能的查询。根据上一篇文章中的建议,我在查询中删除了除一个 cte 之外的所有内容,并实现了一个带有索引的临时表。它仍然很慢...目前 40 分钟并且还在计数,还没有返回数据。一些背景信息:所有数据来自的一张表大约有 500 万行。它上面有几个索引,包括一个唯一的非聚集索引,它由 Symbol、Period 和 TradeDate 列组成,其中包括 Value 列。我还有两个完全相同,但先是 Period,然后是 TradeDate。表上还有一个唯一的聚集索引。什么可以加快这个速度?临时表上的不同索引?抱歉,有一个半重复的帖子。我在这里停滞不前。任何帮助都是巨大的。

执行计划,按要求: