问题标签 [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.
mysql - 查询效率 - 从表中选择 2 个最新的“组/批次”记录
我们测试了一个非常有趣的 SQL 查询。不幸的是,事实证明这个查询运行有点慢 - O(n2) - 我们正在寻找一个优化的解决方案,或者可能也是一个完全不同的解决方案?
目标:
http://www.sqlfiddle.com/#!9/07e5d/4
该查询工作正常并显示正确的结果,但至少使用两次全表扫描,这在有太多行要扫描时当然很糟糕。
是否可以(a)首先选择特定日期范围内的所有record_customer_id(s),保存该查询的结果,然后(b)在SQL fiddle中运行工作查询来处理这些保存的结果?
或者是否有一种完全不同的方法可以实现出色的性能?
任何帮助是极大的赞赏!
mysql - MySQL中使用IN子句更新时如何避免全表扫描
我有 2 个 MySQL 表:termlist 和 blacklist。它们都在“术语”字段上有索引,而黑名单在“状态”字段上有另一个索引。
我想将术语列表中的术语状态更新为状态为“A”的黑名单中的术语状态为“B”,我发出以下 SQL 语句:
它会导致对 termlist 进行全表扫描。我想使用“带有内部连接的更新”,但我不能,因为 select 语句中有 where 子句。
我知道我可以从该 select 语句创建一个临时表,然后使用该临时表更新内部联接,但如果我想多次执行此更新,这有点乏味。
是否有一个更新语句可以在没有全表扫描的情况下完成工作?
sql - 选择未索引的列时忽略复合索引 (Oracle)
我们有一个简单的join语句,其中一些when子句可能变成null。该语句由应用程序生成。当我们有 this is null约束时,查询计划就会出现问题。
我们遵循 StackExchange 上的文章中描述的方法,并为列创建了一个复合索引 - 可为空的和我们加入的那个。只有当我们只选择索引列时才有帮助。如果我们选择未索引的列,它将被忽略,而查询结果是相同的 - 例如,没有选择行。
我们看到的唯一选择 - 更改应用程序的逻辑,但可能还有办法在数据库级别解决这个问题?
然后我们检查计划:
1.
计划 1 - 范围扫描
2.
Plan2(上面的相同链接) - 全表扫描
提高性能的最佳方法是什么:更改查询、使用更智能的索引或应用固定计划?
*更新*当我准备这个问题时,我的样本计划自行更改,现在我们有Plan2*而不是 Plan2 - 没有全表扫描。但是,如果我重新创建示例(删除表并再次准备它们) - 计划再次是 Plan2(全表扫描)。这个技巧在实际数据库中不会发生。
oracle11g - 避免全表扫描 - 仅提取第一行
我正在尝试编写一个仅在满足条件时提取第一(随机)行的查询。
这个查询的问题是全表扫描。我想在不必完全访问表的情况下获得相同的结果。有任何想法吗?
谢谢
database - 如何在 Oracle 数据库中使全表扫描更快?
这是一个简单的问题。假设我有一张大表(500 万行),我别无选择,只能进行全表扫描。
有什么办法可以让我的数据库更快地返回结果?
背景:
我们有一个由第三方提供给我们的应用程序,该应用程序被设计成健壮/灵活的——它的数据库中只有很少的大表。例如,其中一张表是“对象”表,它存储所有对象。另一个表是“关系”表,它捕获对象之间的所有关系。它本质上允许您在不更改其架构的情况下存储任何内容。
我的任务是设计一个单独的报告应用程序——一个查询这个数据库的应用程序。它必须是实时数据。由于表的大小,加上查询的复杂性,存在性能问题。
我想知道我应该如何处理性能问题。我已经在索引之后创建了索引,但是查询仍然非常复杂,最终,我仍然需要进行多次全表扫描。
好消息是,我仍处于设计阶段——所以我想听到尽可能多的建议,以防我错过了什么。
oracle11g - 使用 Oracle 中非常大的表上的聚合函数优化查询内存使用的方法
我有一个包含大量数据的表(比如 1,000,000,000 行)。
表结构:
我已经从表中省略了其他字段,因为我不能使用其中任何一个来限制我获取的数据。
这里的主键是Id
. 我没有任何索引,只有名称列。
我需要找到出现次数超过 n 的名称列表(例如 n = 10)。
我尝试了以下选项:
他们都占用了很大的临时空间。
任何其他优化查询以使用更少临时空间的建议。速度不是我最关心的问题。即使查询需要大约 2 小时也可以。
mysql - 可能是坏索引,全表扫描
你能帮我索引我的表吗?
问题是我索引了我的表,但我的解释中仍然有“全表扫描”
这是我的(工作)查询,但在大表上它可能很慢,我不知道如何更改它
附言。index3 - 当访问者 = 1 刷新 id = 5 的页面时,我不想多次取值 (1,5)
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 对象。
谢谢!
mysql - 为什么 MySQL 在运行查询时不使用我的索引?
我正在使用 MySQL 5.5.37。目前无法升级。我有这张桌子
注意 ACCESS_CODE_ID 和 TEACHER_ACCESS_CODE_ID 列上的索引。然而,当这个查询运行时(它是由 Hibernate 生成的,这就是为什么它看起来有点奇怪),注意正在发生的全表扫描……</p>
有什么办法可以重写它以返回相同的结果,但让 MySQL 理解使用 my_classroom 表上的索引?
编辑:响应lsemi的建议,MySql的解释计划......
编辑2:解释计划