从MySQL检索数据时总是可以使用SELECT *吗?

时间:2014-06-23 03:54:44

标签: mysql sql-server database

即使在从MySQL检索数据时只需要一列,是否可以始终使用SELECT *?它会影响查询的速度或系统的速度吗?感谢。

3 个答案:

答案 0 :(得分:1)

不,它并不总是好的。

但它也不总是一个问题。

为了影响绩效:

如果您只选择列的子集,则会对访问路径产生积极影响。也许这些列可以从索引中读取而不会触及表格。

除此之外,还有原始网络I / O.发送三列使用的带宽比发送三百份(特别是多行)少得多。

除此之外,客户端应用程序还需要内存来处理结果集。

答案 1 :(得分:0)

我相信select中的列是查询中时间/ CPU密集度最低的部分。限制行数,通过" WHERE"条款或明确使用" LIMIT"是节省时间的地方。

答案 2 :(得分:0)

根据我的个人经验,您应该尽可能选择SELECT *以上的命名列。

但是,性能不是的关键原因。

  • 使用SELECT *的代码通常难以阅读和调试,因为它不明确查询的目的是什么。

  • 使用SELECT *的代码可能会在数据库结构发生更改时中断(按索引而不是按名称引用列几乎总是编写代码的错误方法)。

  • 最后,检索更大的数据集 会影响速度,带宽和内存消耗,如果可以轻松避免,那么这是不可取的。

    < / LI>

就性能而言,JOIN和行计数比选定列中的差异更有可能降低查询性能,但效率低下的习惯会在以后的项目中复杂化。即。测试平台应用程序可能没有性能问题,但是当事情扩展时,或者只能通过网络的受限带宽访问数据时,您会很高兴地编写明确的SELECT来开始。

请注意,如果您只是编写一次性查询来检查某些数据,我不会担心,但如果您正在为可能经常执行的代码库编写查询,那么编写好的查询和,必要时考虑存储过程。