gpt4 book ai didi

大型数据库表的 sql 优化器

转载 作者:搜寻专家 更新时间:2023-10-30 20:06:01 24 4
gpt4 key购买 nike

我有一个表,其中包含数百万行,我需要加入这些行才能进行选择。响应时间不太好,我该如何改进它的响应?我已经尝试向我选择的列添加索引,有没有我可以用来优化 sql 的工具,或者我如何诊断 sql 的瓶颈并改进它?任何建议将不胜感激。我正在使用 oracle server 10g 并使用 asp.net 作为我的客户端。对于具有数百万行的表,还有其他类型的索引有用吗?

最佳答案

您可能应该从 EXPLAIN PLAN 开始.

Use the EXPLAIN PLAN statement to determine the execution plan Oracle Database follows to execute a specified SQL statement. This statement inserts a row describing each step of the execution plan into a specified table. You can also issue the EXPLAIN PLAN statement as part of the SQL trace facility.

This statement also determines the cost of executing the statement. If any domain indexes are defined on the table, then user-defined CPU and I/O costs will also be inserted.

然后编辑您的问题,并发布 SQL 语句和 EXPLAIN PLAN 的输出。

稍后。 . .

在这个问题上我不会给你太多帮助。 269 行,至少 29 个 SELECT、并行查询、远程数据库、外连接(旧式)等。

我能给你最好的建议是

  • 从 EXPLAIN PLAN 中获取更多信息,并且
  • 简化问题。

plan table有比通常发布的更多的专栏。 COST、CARDINALITY、BYTES 和 TIME 列可能有助于确定调整工作的优先级。

您在该查询中进行了 10 次全表扫描。 (查询计划中的“TABLE ACCESS FULL”。)这通常是一个不好的迹象;全表扫描通常需要相对较长的时间才能运行。这并不总是是个坏兆头。一个小表的完整扫描可能比索引扫描更快。

首先为查询中的 29 个 SELECT 语句获取 EXPLAIN PLAN 输出。如果它们中的任何一个显示全表扫描,您可能可以使用 suitable indexes 提高它们的性能. (Oracle 支持多种不同类型的索引。不要忽视多列索引的机会。)无论如何,EXPLAIN PLAN 输出将帮助您确定 29 个 SELECT 中最慢的一个。

关于大型数据库表的 sql 优化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7591354/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com