一尘不染

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

sql

如果我有两个查询

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 *明智的还是天真的?


阅读 117

收藏
2021-05-05

共1个答案

一尘不染

你最好避免 SELECT *

  • 当您更改表布局时,这会导致混乱。
  • 它选择不需要的列,并且您的数据包变大。
  • 这些列可以获取重复的名称,这对于某些应用程序也不是很好
  • 如果您需要的所有列都被一个索引覆盖,SELECT columns则将仅使用该索引,而SELECT *将需要访问表记录以获取不需要的值。也不利于性能。
2021-05-05