gpt4 book ai didi

sql - 选择 * from 的 oracle 10 性能问题

转载 作者:行者123 更新时间:2023-12-04 06:50:27 25 4
gpt4 key购买 nike

sql:select * from user_info where userid='1100907' and status='1'
userid 被索引,表的行数少于 10000 并且有一个 LOB 列。

sql 需要 1 秒(我通过在 sqlplus 中使用“设置计时开启”得到了这个)。我尝试使用所有列名来替换 *,但仍然是 1 秒。删除 LOB 列后,sql 需要 0.99 秒。当我将列数减少一半时,时间也减少了一半。

最后,select userid from user_info where userid='1100907' and status='1'需要 0.01 秒。

有人能弄清楚吗?

最佳答案

请记住,“挂钟性能测试”是不可靠的。它受环境数据库条件的影响,并且 - 当输出到 SQL*Plus 时 - 取决于物理显示数据所需的时间。这也许可以解释为什么选择一半的列确实对耗时有如此重大的影响。这个表有多少列?

调整从 EXPLAIN PLAN 开始。此工具将向您展示数据库将如何执行您的查询。 Find out more .

例如,服务这个查询更快

select userid from user_info

那么这个
select * from user_info

因为数据库可以通过 userid 上的索引信息满足第一个查询,而根本不接触表。

编辑

"Can you tell me why sqlplus print column names many many times other than just returning result"



这与分页有关。 SQLPlus 每次抛出一个页面时都会重复列标题。您可以使用以下任一 SQLPlus 命令抑制此行为:
set heading off

或者
set pages n  

在第二种情况下,使 n 非常大(例如 2000)或为零。

关于sql - 选择 * from 的 oracle 10 性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3200482/

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