sql - 返回的列数是否会影响查询的速度?

标签 sql performance

如果我有两个查询

SELECT Id, Forename, Surname
FROM Person
WHERE PersonName Like(‘%frank%’)


SELECT *
FROM Person
WHERE PersonName Like(‘%frank%’)

哪个查询将运行得更快?是where子句/表联接的最大因素,还是返回的列数最大?

我之所以问是因为我正在构建一系列映射到数据库表的对象。通常,每个对象将至少具有以下三种方法:
Select –选择所有内容
List –选择足够的数量,可用于填充下拉列表
Search –选择结果中可见的所有内容,通常大约6列。

如果每个查询返回的列完全相同,则代码的维护和测试应该更加简单。该数据库在任何给定的表中都不可能超过50,000行,因此,如果性能差异很小,那么我将节省开发时间。如果性能要下降,那么我将从另一个角度进行研究。

因此,为了易于开发,SELECT *是明智的还是天真的?

最佳答案

你最好避免SELECT *

  • 更改表布局时会引起困惑。
  • 它选择不需要的列,并且您的数据包变大。
  • 列可以获取重复的名称,这对于某些应用程序
  • 也不利
  • 如果您需要的所有列都被索引覆盖,则SELECT columns将仅使用此索引,而SELECT *将需要访问表记录以获取不需要的值。也不利于性能。
  • 关于sql - 返回的列数是否会影响查询的速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/852572/

    相关文章:

    mysql - 如何在mysql的删除/更新查询中使用子查询

    sql - 运行总计 - 触发器还是查询?

    python - 数组中点之间的快速加权欧氏距离

    java - Java 代码内部基准测试

    sql - 优化查询

    mySQL - 查询行数和总百分比太慢

    java - 当我的accept-count=100000时,为什么会出现SocketTimeoutException?

    mysql - MySQL 是将整行加载到内存中,还是只加载 WHERE、ORDER BY 和 GROUP BY 中使用的列?

    python - 加快 Python 循环追加速度

    SQL Server 按日期和日期范围内的一天中的时间分组