当前位置: 首页 > 面试题库 >

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

宰父劲
2023-03-14
问题内容

如果我有两个查询

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 *将需要访问表记录以获取不需要的值。也不利于性能


 类似资料:
  • 问题内容: 我有这个查询: 我的表是,我有一列名为。我要更新的是名为“ yes” 的列。 知道我在做什么错吗?当我返回查询时,它说受影响的0行。 问题答案: 如苯丙胺和Yada所建议,如果您的电话号码在表中,请使用进行检查。 但是请记住:如果所讨论的行的值已经是“是”,则mysql不会更改该值,因此将返回“受影响的0行”。因此,请务必同时检查

  • 问题内容: 如何获取使用SQL Server的SQL查询返回的列数? 例如,如果我有如下查询: 它应该返回表A1中的总列数+表A2中的总列数。但是查询可能会更复杂。 问题答案: 这是一种方法: 您可以通过创建视图来执行类似的操作。

  • 问题内容: 我试图用谷歌搜索,但是没有运气。 我的开关很大,有些情况 显然 比其他情况 更常见 。 因此,我想知道订单是否真正保持原状,并且在“下”之前先测试“上”案例,因此可以更快地进行评估。 我想保留订单,但是如果它影响速度,那么重新排序分支将是一个好主意。 例如: 问题答案: 对switch语句重新排序没有任何效果。 查看Java字节码规范,可以将a编译为a 或一条指令,然后打开a 。A 总

  • 我正在处理Azure Cosmos DB(通过. NET SDK)并注意到一些奇怪的事情。 通常,当我使用延续标记逐页请求查询时,我永远不会得到在第一个延续标记创建之后创建的文档。我可以观察到更改的文档,缺少删除的(或者说是新过滤掉的)文档,但是看不到新的文档。但是,如果我只允许1kB的延续标记(我能设置的最小标记),我也会得到新文档。显然,只要它们最终被排序到剩余的页面。 这有点道理,因为有了大

  • 问题内容: 当我在MySQL中执行此命令时: 它会影响整个引擎还是仅仅是我当前的交易? 问题答案: 在设置问题方式时,它是基于会话的。 https://dev.mysql.com/doc/refman/5.7/zh-CN/server-system- variables.html 据此,以“两者”为范围。这意味着可以为会话设置它: 或全球:

  • 我一直在MariaDB中使用大型和扩展数据库的数据库。数据库由PHP应用程序访问。 我将DB字符集和排序规则设置为utf8mb4和utf8mb4\u unicode\u ci 但并非所有的表都有text(varchar、text等)列。有些表只保存关系,因此所有列都是数字类型(int、bigint等)或日期/时间等。此外,不是文本类型。 在表中,我只保留数字,我是否需要保留Unicode多字节字符