SQL 中 SELECT * 有什么缺点吗?

2024-01-09

假设我有一个执行 SQL 的程序,并且我想在表中查询 A、B 和 C 列中的值(假设有一些列我并不严格需要)。 SELECT * 和 SELECT A、B、C 有什么区别?

到目前为止我的想法如下。仅选择您需要的列:

  • ...将需要更少的内存来存储结果。
  • ...可能会使解析程序中的结果变得更容易一些。
  • ...不会更快,除非所选列都可以使用覆盖索引检索。

但我觉得可能还有更多问题在起作用。


你说的是对的,但还有更多。

“select *”的另一个非常重要的问题是如果表架构发生更改会发生什么。 如果客户端使用“select *”,它将获得一组可能意外的列(更多列、更少列、不同顺序...)。这真是太糟了。

如果客户端选择了它想要的确切列名(A、B、C),那么它将获得具有预期格式(如果可能)或特定的明显错误的结果集。

此外,内存消耗问题以及用于选择不需要的列的可能的网络流量问题对于“大型”应用程序来说可能是至关重要的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL 中 SELECT * 有什么缺点吗? 的相关文章

  • 删除重复的行并需要在mysql中保留所有行中的一个[重复]

    这个问题在这里已经有答案了 我想删除基于两列的重复行 但需要保留所有行 1 行 重复行可以多于两行 例如 ID NAME PHONE 1 NIL 1234 2 NIL 1234 3 NIL 1234 4 MES 5989 我想从上面 3 行
  • 在 jQuery 中获取 SELECT 的值和文本[重复]

    这个问题在这里已经有答案了 可能的重复 获取选择框中选定选项标签的值 https stackoverflow com questions 7380604 getting the value of the selected option ta
  • Oracle 按月滚动或运行总计

    目标 每个月末所有报表的滚动 运行总计 Code select TRUNC ACTHX STMT HX STMT DATE MM AS MNTH COUNT ACTHX INVOICE as STMTS from ACTHX group b
  • RANK() OVER PARTITION 并重置 RANK

    如何获得在分区更改时重新启动的 RANK 我有这张表 ID Date Value 1 2015 01 01 1 2 2015 01 02 1
  • 如何使用第二行中的值填充第一行中的空值?

    我正在尝试编写一个查询 仅显示每个名称的第一行 但这些行的标题为空 因此我想从紧邻的下一行中提取它们的标题 table1 Name Title Row Dan NULL 1 Dan Engineer 2 Dan Developer 3 Ja
  • 如何将事物的组合映射到关系数据库?

    我有一个表 其记录代表某些对象 为了简单起见 我假设该表只有一列 这是唯一的ObjectId 现在我需要一种方法来存储该表中的对象组合 组合必须是唯一的 但可以是任意长度 例如 如果我有ObjectIds 1 2 3 4 我想存储以下组合
  • 使用条件 SQL 统计每月汇总记录

    我有一张桌子 我们就叫他们桌子吧SUMMARYDATA NIP NAME DEPARTMENT STATUSIN STATUSOUT TOTALLOSTTIME A1 ARIA BB 2020 01 21 08 06 23 2020 01
  • 如何在 Spring Data 中选择不同的结果

    我在使用简单的 Spring Data 查询或 Query 或 QueryDSL 在 Spring Data 中构建查询时遇到问题 如何选择三列 研究 国家 登录 不同的行 并且查询结果将是用户对象类型的列表 Table User Id S
  • SQLite (Android):使用 ORDER BY 更新查询

    Android SQLite 我想要在 myTable 中的其他行之间插入行在android中使用SQLite 为此 我尝试增加从第 3 行开始的所有行的 id 这样 我就可以在位置 3 处插入新行 myTable 的主键是列 id 表中没
  • 在 Mysql 上使用 EntityManager JPA 运行脚本

    我正在尝试运行脚本 sql 文件 但由于我尝试了多种方法 因此出现多个错误 这是我的主要 sql 脚本 INSERT INTO Unity VALUES 11 paq 0 2013 04 15 11 41 37 Admin Paquete
  • 没有为 1 个或多个必需参数给出值。更新SQL

    我正在编写一个程序 当用户在列表视图上选择记录时 该程序会更新密码或积分 我收到错误 没有为 1 个或多个必需参数给出值 我不知道如何纠正 我是否遗漏了一些明显的东西 Dim sql As String UPDATE Users SET P
  • 需要 SQL 查询澄清[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个由以下列组成的表 billid patientid doctorid fees 如何显示治疗多名患者的医生 尝试了以下代码并得到了
  • 带有可变 WHERE 子句的批量 UPDATE 表

    我有一堆值对 foo1 bar1 foo2 bar2 我想做一堆更新 将 foo 列设置为 foo1 其中 bar 列为 bar1 我正在使用 psycopg2 在 Python 中执行此操作 我可以executemany与查询UPDATE
  • 3 个表的 SQL 查询(或联接)

    第一次在 Stack Overflow 上问问题 很棒的资源 但是只有一件事真正让我作为 SQL 新手感到困惑 我有三个表 我想获取与鲍勃的学生相关的所有导师的姓名 表 1 教师 ID Name 1 Bob 表 2 学生 STUDENT I
  • H2 SQL 日期比较

    在 H2 数据库中 如何在 TIMESTAMP 类型的列上运行查询 SELECT FROM RECORDS WHERE TRAN DATE lt 2012 07 24 Try 2012 07 24
  • 如何使用原始 SQL 查询实现搜索功能

    我正在创建一个由 CS50 的网络系列指导的应用程序 这要求我仅使用原始 SQL 查询而不是 ORM 我正在尝试创建一个搜索功能 用户可以在其中查找存储在数据库中的书籍列表 我希望他们能够查询 书籍 表中的 ISBN 标题 作者列 目前 它
  • 使用来自另一个数据库的选择查询更新 mysql 表

    我有两个数据库 我想用另一个数据库表中的值更新一个表 我正在使用以下查询 但它不起作用 UPDATE database1 table1 SET field2 database2 table1 field2 WHERE database1 t
  • codeigniter,获取mysql表列中的最大值

    我正在使用 codeigniter 2 我有一个 mysql 表列 存储每个学生所用的时间 例如 1 2327 0 6547 1 9876 我想获得最大值 值该列 这是我的代码 this gt db gt select max time t
  • WHERE NOT EXIST 附近的语法错误

    我在堆栈中搜索 但没有一个达到最终答案 我的查询是这样的 INSERT INTO user username frequence autoSend VALUES feri2 3 1 WHERE NOT EXISTS SELECT FROM
  • 在同一查询中选择 Count of ip 和 Count of DISTINCT ip

    我有一个这样的表结构 TABLE NAME counter id datetime url ip 1 2013 04 12 13 27 09 url1 ip01 2 2013 04 13 10 55 43 url2 ip02 3 2013

随机推荐

  • Swift 中的全局修饰键按下检测

    我正在尝试使用Carbon的功能RegisterEventHotKey创建按下命令键时的热键 我这样使用它 InstallEventHandler GetApplicationEventTarget handler 1 eventType
  • perl awk OR sed,在两个时间戳之间搜索

    我有一个包含以下示例文本的文件 实际文字很大 2014 05 08 19 15 44 544824
  • WPF CheckBox 的选中和未选中状态的单独事件:为什么?

    有没有像这样的单一事件Changed我可以用它来一起处理这两个事件吗 为什么他们就这样分开呢 是否因为两个事件都有一个事件需要您按名称引用控件 您需要在 XAML 中指定该名称 这会增加混乱吗 不直接 但是 您可以对两者使用相同的事件处理程
  • 与 macOS Sierra 中的 AppTranslocation 相关的错误

    macOS Sierra 中的 Gatekeeper 似乎有点挑剔 无论如何 它导致我几年前制作的一个小实用程序抛出一个相当烦人的错误 由于我还没有时间深入研究 Sierra 的幕后变化 我不确定如何修复该错误 有人有处理与 AppTran
  • 如何将 Angular 2 服务与 Ionic 2 一起使用?

    我是 Ionic 2 的新手 我在 Angular 2 文档中读到 该服务需要在引导应用程序时注入 但在阅读 Ionic 2 教程时看不到任何引导程序 非常感谢任何帮助 Ionic2 中没有使用 Bootstrap 仅使用 App 来声明您
  • 反编译apk,lambda问题

    我反编译后的apk 分别出现了 java文件 但是有些文件的名字中有这样的 AudioPlayerActivity Lambda 1 java 这个 Lambda 1 是什么 AudioPlayerActivity Lambda 1 jav
  • 如何使用结构和实现的生命周期来推断实现的适当生命周期?

    我该如何解决这个错误 当我在中使用 匿名生命周期 时 我究竟在告诉编译器什么 impl struct LineHandlerInfo lt a gt label a str match literal a str f fn str gt O
  • MISRA 11.3:从 int 转换为指针

    我有一个关于如何解决 MISRA 2004 11 3 违规问题的问题 代码如下 tm uint8 read tm uint8 data data 0 tm uint8 0x00003DD2 data 1 tm uint8 0x00003DD
  • 重试 Bash 命令并超时

    如何重试 bash 命令直到其状态正常或达到超时 我最好的镜头 我正在寻找更简单的东西 NEXT WAIT TIME 0 COMMAND STATUS 1 until COMMAND STATUS eq 0 NEXT WAIT TIME e
  • 在 Android 中以编程方式添加活动

    我想在 Android 中以编程方式添加多个活动 我可以将这些活动动态添加到清单中吗 Android 中还有其他解决方案吗 您不能动态添加新活动到您的应用程序或编辑清单文件 因为这会违反 Android 安全模型 清单文件的目的之一是开发人
  • 在 inno-setup 中作为安装后运行 netsh.exe

    在以下脚本中 我运行 netsh exe 以在 TCP 端口上启用 http GET 请求 但即使安装日志显示退出代码为 0 并且参数也是正确的 我没有看到端口已启用 有任何想法吗 Script generated by the Inno
  • 如何为 alpine linux 安装 msodbcsql17 驱动程序?

    我找到了一个github上的相关问题 https github com Microsoft msphpsql issues 300但它位于 msphpsql 存储库下 所以我不确定它是否适用于 alpine 的一般驱动程序 据说MS还不支持
  • Selenium/Webdriver 的 python 绑定中的 get_Text() 等效项是什么

    我想从 Selenium 1 迁移到 Selenium 2 我使用 python 绑定 但是我找不到任何get text 功能 eg selenium find elements by css selector locator get te
  • 空手道 UI:driver.location 方法引发错误:路径:$,实际:null

    我正在尝试使用方法 driver location 但结果出现错误 路径 实际 null 我的代码 功能 浏览器自动化 背景 配置驱动程序 type chromedriver showDriverLog true 场景 尝试登录github
  • 用Python对图像进行二维小波滤波

    我正在尝试在 python 中进行二维小波滤波 我发现了 PyWavelets 并且已经研究它有一段时间了 我正在尝试进行 4 个级别的转换 当我打印出来时 它给出了奇怪的输出 我不确定到底发生了什么 我尝试了一些方法 但这是最新的示例 t
  • 浏览器如何解析/渲染 CSS?

    他们使用什么样的图形框架 技术来理解和绘制 CSS 指令 我这么问是因为我有兴趣编写使用 CSS 作为布局机制的软件 由于 CSS 是一个相当大的规范 所以编写我自己的规范不是非常困难吗 CSS 渲染器 这就是为什么会有如此多的浏览器差异
  • Git - 切换分支(窗口)和未提交的更改

    我很难理解一些 git DCVS 概念 事情是这样的 我创建了一个 git 项目 并从 SVN 存储库导入它 我做了一些承诺 我想尝试一些东西 所以我创建了一个名为常量更新 我切换到常量更新分支 移动一些文件 删除其他文件并添加更多文件 我
  • Scala:如何为任何案例类定义抽象可复制超类?

    请耐心等待 在 OP 有意义之前 有一些背景 我正在使用 Slick 3 1 x 和 slick 代码生成器 顺便说一句 整个源代码可以在play authenticate usage scala github 项目 https githu
  • Kotlin 的 DAO 应该返回Optional还是null?

    在 Kotlin JPA 之前 我曾经这样编写 DAO 层 public interface UserDao extends JpaRepository
  • SQL 中 SELECT * 有什么缺点吗?

    假设我有一个执行 SQL 的程序 并且我想在表中查询 A B 和 C 列中的值 假设有一些列我并不严格需要 SELECT 和 SELECT A B C 有什么区别 到目前为止我的想法如下 仅选择您需要的列 将需要更少的内存来存储结果 可能会