gpt4 book ai didi

sql - 检索所有列和多列的性能

转载 作者:行者123 更新时间:2023-12-01 09:13:30 24 4
gpt4 key购买 nike

我正在按照“10分钟SQL”学习SQL,

引用使用通配符检索所有记录,它指出:

As a rule, you are better off not using the * wildcard unless you really do need every column in the table. Even though use of wildcards may save you the time and effort needed to list the desired columns explicitly, retrieving unnecessary columns usually slows down the performance of your retrieval and your application.

但是,检索所有记录比检索多个字段花费的时间更少:

enter image description here

如结果所示,通配符为 0.02 秒 V.S. 0.1 秒

我测试了几次,通配符总是比多个指定的列快,即使每次消耗的时间都不同。

最佳答案

感谢您尝试验证您在书中获得的建议!单个测试既不会使建议无效,也不会使测试无效。值得进一步潜水。

SQL In 10 Minutes 中提供的建议是合理的建议——它明确指出与性能相关的目的。 (另一个考虑是当数据库更改时它会使代码不稳定。)注意:我经常使用 select t.* 进行临时查询。

为什么结果不同?这可能有多种原因:

  • 数据库没有确定性的性能,因此其他考虑因素(例如机器上运行的其他进程或资源争用)可能会影响性能。
  • 正如评论中提到的,缓存可能是原因。具体来说,运行第一个查询可能需要从磁盘加载数据,并且第一个查询已经在内存中。
  • 另一种形式的缓存是针对执行计划的,所以也许第一个执行计划被缓存了,而第二个没有。
  • 你没有提到数据库,但也许你的数据库有一个非常非常慢的编译器,编译第一个比第二个需要更长的时间。

从根本上说,从常识的角度来看,该建议是合理的。移动更少的数据应该更有效。建议就是这么说的。

无论如何,10 毫秒和 2 毫秒之间的差异是非常短的。我不会将这种性能推广到更大的数据,并说第二个比第一个快 5 倍一般。无论出于何种原因,在一个非常小的数据集上缩短了 8 毫秒,这个数据集是如此之小以至于性能无论如何都不是考虑因素。

关于sql - 检索所有列和多列的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51799289/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com