ai didi

database - 在 PL/SQL 中使用 "select *"作为游标是否被认为是糟糕的编程?

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

我经常这样使用游标:

for rec in (select * from MY_TABLE where MY_COND = ITION) loop
if rec.FIELD1 = 'something' then
do_something();
end if;

if rec.FIELD2 <> 'somethingelse' then
blabla();
end if;
end loop;

我的团队领导告诉我不要使用 select * 因为它是糟糕的编程,但我不明白为什么(在这种情况下)。

最佳答案

在您的代码中使用select * 就是我所说的惰性编程,它有几个令人讨厌的副作用。您经历这些副作用的程度会有所不同,但绝不是积极的。

我将使用其他答案中已经提到的一些要点,但请随时编辑我的答案并添加更多关于使用 select * 的负面观点。

  1. 您从 SQL 引擎向您的代码传输的数据超出了需要,这会对性能产生负面影响。

  2. 您返回的信息需要放在变量中(例如记录变量)。这将占用比必要更多的 PGA 内存。

  3. 通过使用 select *,您将永远不会单独使用索引来检索所需的信息,您还必须始终访问该表(前提是不存在包含所有列的索引表)。同样,对性能有负面影响。

  4. 维护您的代码的人不太清楚您的意图是什么。他们需要深入研究代码以发现所有出现的记录变量,以了解正在检索的内容。

  5. 您不会使用SQL 函数进行计算,而是始终依赖PL/SQL 或Java 计算。您可能会错过一些很棒的 SQL 改进,例如分析函数、模型子句、递归子查询分解等。

  6. 从 Oracle11 开始,在列级别跟踪依赖关系,这意味着当您使用 select * 时,您的代码在数据字典中被标记为“依赖于所有列”那张 table 当这些列之一发生问题时,您的程序将失效。因此,使用 select * 意味着您的代码将比必要的更频繁地失效。

同样,请随意添加您自己的观点。

关于database - 在 PL/SQL 中使用 "select *"作为游标是否被认为是糟糕的编程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9225638/

24 4 0
文章推荐: java - Mac OS 打不开 TopCoder Arena 无法打开
文章推荐: database - Grails 一直在删除我的表
文章推荐: objective-c - NSToolbarItem 图像缩放
文章推荐: java - quartz scheduler.2.2x 创建 sql server 数据库模式?
搜寻专家
个人简介

我是一名优秀的程序员,十分优秀!

滴滴打车优惠券免费领取
滴滴打车优惠券
全站热门文章
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com