- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我经常这样使用游标:
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 *
的负面观点。
您从 SQL 引擎向您的代码传输的数据超出了需要,这会对性能产生负面影响。
您返回的信息需要放在变量中(例如记录变量)。这将占用比必要更多的 PGA 内存。
通过使用 select *
,您将永远不会单独使用索引来检索所需的信息,您还必须始终访问该表(前提是不存在包含所有列的索引表)。同样,对性能有负面影响。
维护您的代码的人不太清楚您的意图是什么。他们需要深入研究代码以发现所有出现的记录变量,以了解正在检索的内容。
您不会使用SQL 函数进行计算,而是始终依赖PL/SQL 或Java 计算。您可能会错过一些很棒的 SQL 改进,例如分析函数、模型子句、递归子查询分解等。
从 Oracle11 开始,在列级别跟踪依赖关系,这意味着当您使用 select *
时,您的代码在数据字典中被标记为“依赖于所有列”那张 table 当这些列之一发生问题时,您的程序将失效。因此,使用 select * 意味着您的代码将比必要的更频繁地失效。
同样,请随意添加您自己的观点。
关于database - 在 PL/SQL 中使用 "select *"作为游标是否被认为是糟糕的编程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9225638/
我想在这里说的是我在从之前离开的相同状态重新启动我的应用程序时遇到的问题。我在这方面做了很多研发,并且已经解决了 stackoverflow 中发布的问题。所以请不要说它是重复的。 我试过设置这些选项
当我在我的类中实现 __cmp__ 函数时,python 是否会在内部重载“==”,我们在 C++ 中是如何做到的? 只是好奇。我是 python 的新手。 :) 最佳答案 ==的含义当您定义 __c
我在 Raspberry Pi2 上安装了 Gitlab,几个月来它运行良好。但自从关闭了RPi的电源后,它就不再起作用了。网页返回502错误。 502 Whoops, GitLab is takin
有人知道用户登陆带有Webfonts的页面时为什么Google Chrome浏览器崩溃吗 它并不会一直发生,而是经常发生 我刚得到一个蓝屏页面,却不知道为什么:该页面不是来自重定向时就很好了。 这是我
当我登录时,Skype始终会给出此错误。 糟糕,Skype存在问题。尝试注销然后重新登录。 STARTUP_LOAD_ERROR MACBOOK 最佳答案 Macbook 用户 退出Skype 回家
我正在尝试从 flutter 开始,首先我在 cmd 上运行 flutter doctor 它有效。在我安装了 ANDROID SDK 之后,同样的命令 flutter doctor 给了我异常:
从 android studio 终端运行 flutter attach 不工作。显示错误flutter 意外退出。 终端输出: flutter attach Checking for adverti
当使用 TinyMCE 4 测试所有浏览器时,Chrome 非常慢。 (我尝试从 TinyMCE 中删除所有插件,但没有任何区别。) Chrome 需要大约 20-25 秒在 TinyMCE 中呈现一
我试图让下面的脚本工作,以便从远程服务器(服务器 1)读取特定目录中的 CSV 文件列表,并将数据移植到另一台服务器的 PostgreSQL 数据库中。 我已经创建了一个 rsa SSH key 并将
在嵌入式 linux 环境中(在 PowerPC 上定制的 2.4.25)几个小时后我得到以下内核 panic : Oops: kernel access of bad area, sig: 11 N
在将现有 Node.js (Hapi.js) + RethinkDB 从 OVH VPS(最小 vps)迁移到 AWS Lambda( Node )+ DynamoDB 的过程中,我最近遇到了一个非常
我是一名优秀的程序员,十分优秀!