- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么select * from table
的性能不如select col_1,col_2 from table
?据我了解,占用时间的是行的定位,而不是返回多少列。
最佳答案
选择不必要的列可能会导致查询计划更改,从而对性能产生巨大影响。例如,如果 col_1, col2
上有索引,但表中还有其他列,则 select *
查询必须执行全表扫描,而 >select col_1, col_2
查询可以简单地扫描索引,该索引可能要小得多,因此查询成本要低得多。如果您开始处理涉及多个表或涉及针对 View 的查询的查询,选择列的子集有时还可以通过允许 Oracle 消除不必要的联接或函数评估来更改查询计划。现在,公平地说,查询计划根据选择的列而改变的情况并不特别常见,但当它发生时,变化通常是很大的。
如果您从数据库外部的应用程序发出 SQL 语句,选择附加列会强制 Oracle 通过网络发送附加数据,这样您的应用程序将花费更多时间等待网络 I/O 发送不属于它的数据。感兴趣。这可能非常低效,特别是如果您的应用程序部署在 WAN 上。
选择不必要的列还会迫使 Oracle 在不更改计划的情况下执行额外的 I/O。例如,如果表中您不需要的列之一是 LOB
,Oracle 就必须执行额外的工作来获取该 LOB
数据。如果数据存储在磁盘上的链式 block 中,但您感兴趣的列恰好位于第一个行片段中,则 Oracle 不必为指定列子集的查询获取其他行片段。另一方面,执行 select *
的查询必须获取每个行片段。
当然,这是在考虑维护方面之前的情况。如果您在 PL/SQL 之外编写应用程序,执行 SELECT *
意味着将来有人向表中添加新列时您的代码将会中断,或者您的应用程序必须动态确定在运行时返回的列集,以便自动容纳新列。虽然这当然是可能的,但它可能会导致代码更复杂,从而更难以调试和维护。如果您正在编写 PL/SQL 并将数据提取到 %ROWTYPE
变量中,那么在生产代码中执行 SELECT *
是完全合理的;在其他语言中,如果您执行 SELECT *
,通常会给自己带来维护噩梦。
关于sql - oracle 中 select * 与 select colname 的性能对比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11893096/
我想知道如何将数据框的列名替换为原始列名中的唯一字符串? > colnames(df.iso) [1] "../trimmed/100G.tally.fasta" "../trimmed/100R.
我在一个函数中有一个 SELECT 子句,在该子句中我连接了两个表,以查找距离用户一定距离内且当前营业的餐馆。出于某种原因,当我运行这个函数时,我得到以下信息错误: ERROR: column "di
在我的 mvc jqgrid 代码中,colnames 和 colmodel 返回相同长度的 col。但是当运行应用程序时,我收到此错误。有什么帮助吗? 代码: public WeekColumns
我想重命名 data.frame 中的列名, > x=data.frame(name=c("n1","n2"),sex=c("F","M")) > colnames(x[1])="Name" > x
是否有更简单的(即一行代码而不是两行!)方法来执行以下操作: results setNames function (object = nm, nm) { names(object) <- n
我的应用程序将数据从 excel 读取到数据框中。然后它转置数据(感谢excel),然后构建一个数据框。 我想用第一行的内容替换在读取过程中分配的列名。 这是我尝试替换列名的方法。这似乎是执行此操作的
我的源 xml 看起来像: Test Test Test Test Test Test Test
我已经多次使用此功能,但直到现在才想到“它为什么有效?”。R 的 colnames() 函数如何为数据框分配新的列名称?我的意思是我了解 colnames(df) 将如何返回数据框的列名称。但它如何也
我有一个数据框,前 3 行有一些元数据,我需要跳过。但这样做也会影响值列的列名。 我该怎么做才能避免在 excel 上打开每个 CSV 并手动删除这些行? 这是 CSV 在 Excel 中打开时的样子
我有以下代码: library(dplyr) df % left_join(., panel_info, by = "PANID") %>% left_join(., prod_0106, b
我在我的数据库中存储了一个消息列表(这样如果我崩溃了我就不会丢失它们)。 但是当我把它们拉出来的时候,我需要把它们一 block 一 block 地按顺序拉出来。 我正在寻找的是一个查询,它将为我提供
假设我有以下简化表,其中分别包含动态列 a_x(其中 x 是索引,例如 0、1、2、3、4...)和 b_x。 a 列数始终等于 b 列数,但总列数可以是动态的(不总是 3 个 a 和3 b)。为了更
假设我有一个 df > editor A B C D E F G H I J User1 1 0 5 6 5 6 5 6 2 6 Use
我有一个关于 colnames 的问题基础包中的函数 假设您有一个 data.frame,如下所示: df colnames(df)[1] colnames(df)[1] [1] "test" c
我有一个页面,当用户单击一匹马以查看该马的更多信息(通过 mysql 表中的 ID 号引用)时,它只返回第一条记录,而不是您选择的记录。页面是http://www.cbarlranch.com/?pg
我正在审查某人的代码并遇到了这种选择语法: SELECT (Test_ID) id, (Test_Host) host, (Test_Port) port FROM Test_Connection 我
我有一个包含 76 列相同数量物种的数据框,我想使用循环在不同的地 block 中绘制每个物种。但是,我想使用 colnames 来获取每个带有每个物种名称的地 block 。有人可以帮助我解决我的问
我正在尝试在 data.frame 上使用应用和用户定义的函数。在函数内部,我想使用列名(作为绘图的标题),但 apply 似乎去除了列名并仅传递了一个向量。 MWE: trialData <- da
我正在制作一个函数来创建表格,我需要一些涉及格式化的条件规则。一个将基于列名,但是当我使用 as.formula 发送它时似乎已经结束了。我在这里做了一个例子: library(tidyverse)
我正在尝试对数据框中的多个列进行 group_by,但无法在 group_by 函数中写出每个列名,因此我想将列名称为向量,如下所示: cols % filter(disp % group_by(co
我是一名优秀的程序员,十分优秀!