问题标签 [full-table-scan]

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 投票
1 回答
85 浏览

mysql - 查询效率 - 从表中选择 2 个最新的“组/批次”记录

我们测试了一个非常有趣的 SQL 查询。不幸的是,事实证明这个查询运行有点慢 - O(n2) - 我们正在寻找一个优化的解决方案,或者可能也是一个完全不同的解决方案?

目标:

http://www.sqlfiddle.com/#!9/07e5d/4

该查询工作正常并显示正确的结果,但至少使用两次全表扫描,这在有太多行要扫描时当然很糟糕。

是否可以(a)首先选择特定日期范围内的所有record_customer_id(s),保存该查询的结果,然后(b)在SQL fiddle中运行工作查询来处理这些保存的结果?

或者是否有一种完全不同的方法可以实现出色的性能?

任何帮助是极大的赞赏!

0 投票
1 回答
901 浏览

mysql - MySQL中使用IN子句更新时如何避免全表扫描

我有 2 个 MySQL 表:termlist 和 blacklist。它们都在“术语”字段上有索引,而黑名单在“状态”字段上有另一个索引。

我想将术语列表中的术语状态更新为状态为“A”的黑名单中的术语状态为“B”,我发出以下 SQL 语句:

它会导致对 termlist 进行全表扫描。我想使用“带有内部连接的更新”,但我不能,因为 select 语句中有 where 子句。

我知道我可以从该 select 语句创建一个临时表,然后使用该临时表更新内部联接,但如果我想多次执行此更新,这有点乏味。

是否有一个更新语句可以在没有全表扫描的情况下完成工作?

0 投票
1 回答
633 浏览

sql - 选择未索引的列时忽略复合索引 (Oracle)

我们有一个简单的join语句,其中一些when子句可能变成null。该语句由应用程序生成。当我们有 this is null约束时,查询计划就会出现问题。
我们遵循 StackExchange 上的文章中描述的方法,并为列创建了一个复合索引 - 可为空的和我们加入的那个。只有当我们只选择索引列时才有帮助。如果我们选择未索引的列,它将被忽略,而查询结果是相同的 - 例如,没有选择行。

我们看到的唯一选择 - 更改应用程序的逻辑,但可能还有办法在数据库级别解决这个问题?

然后我们检查计划:

1.

计划 1 - 范围扫描

2.

Plan2(上面的相同链接) - 全表扫描

提高性能的最佳方法是什么:更改查询、使用更智能的索引或应用固定计划?

*更新*当我准备这个问题时,我的样本计划自行更改,现在我们有Plan2*而不是 Plan2 - 没有全表扫描。但是,如果我重新创建示例(删除表并再次准备它们) - 计划再次是 Plan2(全表扫描)。这个技巧在实际数据库中不会发生。

0 投票
1 回答
602 浏览

oracle11g - 避免全表扫描 - 仅提取第一行

我正在尝试编写一个仅在满足条件时提取第一(随机)行的查询。

这个查询的问题是全表扫描。我想在不必完全访问表的情况下获得相同的结果。有任何想法吗?

谢谢

0 投票
2 回答
10568 浏览

database - 如何在 Oracle 数据库中使全表扫描更快?

这是一个简单的问题。假设我有一张大表(500 万行),我别无选择,只能进行全表扫描。

有什么办法可以让我的数据库更快地返回结果?

背景:

我们有一个由第三方提供给我们的应用程序,该应用程序被设计成健壮/灵活的——它的数据库中只有很少的大表。例如,其中一张表是“对象”表,它存储所有对象。另一个表是“关系”表,它捕获对象之间的所有关系。它本质上允许您在不更改其架构的情况下存储任何内容。

我的任务是设计一个单独的报告应用程序——一个查询这个数据库的应用程序。它必须是实时数据。由于表的大小,加上查询的复杂性,存在性能问题。

我想知道我应该如何处理性能问题。我已经在索引之后创建了索引,但是查询仍然非常复杂,最终,我仍然需要进行多次全表扫描。

好消息是,我仍处于设计阶段——所以我想听到尽可能多的建议,以防我错过了什么。

0 投票
1 回答
134 浏览

oracle11g - 使用 Oracle 中非常大的表上的聚合函数优化查询内存使用的方法

我有一个包含大量数据的表(比如 1,000,000,000 行)。

表结构:

我已经从表中省略了其他字段,因为我不能使用其中任何一个来限制我获取的数据。

这里的主键是Id. 我没有任何索引,只有名称列。

我需要找到出现次数超过 n 的名称列表(例如 n = 10)。

我尝试了以下选项:

他们都占用了很大的临时空间。

任何其他优化查询以使用更少临时空间的建议。速度不是我最关心的问题。即使查询需要大约 2 小时也可以。

0 投票
2 回答
149 浏览

mysql - 可能是坏索引,全表扫描

你能帮我索引我的表吗?

问题是我索引了我的表,但我的解释中仍然有“全表扫描”

这是我的(工作)查询,但在大表上它可能很慢,我不知道如何更改它

附言。index3 - 当访问者 = 1 刷新 id = 5 的页面时,我不想多次取值 (1,5)

0 投票
2 回答
820 浏览

mysql - MySql - 自连接 - 全表扫描(无法扫描索引)

我有以下自联接查询:

查询很慢,在查看执行计划后,原因似乎是 JOIN 中的全表扫描。该表只有 500 行,并且怀疑这是问题,我将其增加到 100,000 行,以查看它是否对优化器的选择产生了影响。它没有,有 100k 行它仍在进行全表扫描。

我的下一步是尝试使用以下查询强制索引,但出现了同样的情况,即全表扫描:

全表扫描查询执行计划:/

所有列(id、lft、rgt)都是整数,都被索引。

为什么MySql在这里做全表扫描?

如何更改我的查询以使用索引而不是全表扫描?

谢谢

0 投票
1 回答
765 浏览

java - 在 Java 中使用 Table.scan api 进行 Dynamodb 并行扫描

我会感谢任何熟悉 DynamoDB 工作原理的人的帮助。我需要对大型 DynamoDB 表执行扫描。我知道 DynamoDBClient 扫描操作仅限于 1 MB 大小的返回数据。相同的限制是否适用于 Table.scan 操作?问题是 Table.scan 操作返回“ ItemCollection<ScanOutcome>”类型的输出,而 DynamoDBClient 扫描返回 ScanResult 输出,我不清楚这些操作是否以类似的方式工作。

我已经检查了这个例子:http ://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ScanJavaDocumentAPI.html ,但它不包含任何关于使用最后返回的密钥的提示。

我的问题是:如果我使用 Table.scan,我是否还需要在一个循环中进行扫描调用,直到 lastreturnedkey 为空?如果是,我如何获得最后一个密钥?如果没有,我该如何强制分页?任何指向代码示例的链接将不胜感激。我花了一些时间在谷歌上搜索示例,但其中大多数都使用 DynamoDBClient 或 DynamoDBMapper,而我需要使用 Table 和 Index 对象。

谢谢!

0 投票
4 回答
713 浏览

mysql - 为什么 MySQL 在运行查询时不使用我的索引?

我正在使用 MySQL 5.5.37。目前无法升级。我有这张桌子

注意 ACCESS_CODE_ID 和 TEACHER_ACCESS_CODE_ID 列上的索引。然而,当这个查询运行时(它是由 Hibernate 生成的,这就是为什么它看起来有点奇怪),注意正在发生的全表扫描……</p>

有什么办法可以重写它以返回相同的结果,但让 MySQL 理解使用 my_classroom 表上的索引?

编辑:响应lsemi的建议,MySql的解释计划......

编辑2:解释计划