即使在从MySQL检索数据时只需要一列,是否可以始终使用SELECT *?它会影响查询的速度或系统的速度吗?感谢。
答案 0 :(得分:1)
不,它并不总是好的。
但它也不总是一个问题。
为了影响绩效:
如果您只选择列的子集,则会对访问路径产生积极影响。也许这些列可以从索引中读取而不会触及表格。
除此之外,还有原始网络I / O.发送三列使用的带宽比发送三百份(特别是多行)少得多。
除此之外,客户端应用程序还需要内存来处理结果集。
答案 1 :(得分:0)
我相信select中的列是查询中时间/ CPU密集度最低的部分。限制行数,通过" WHERE"条款或明确使用" LIMIT"是节省时间的地方。
答案 2 :(得分:0)
根据我的个人经验,您应该尽可能选择SELECT *
以上的命名列。
但是,性能不是的关键原因。
使用SELECT *
的代码通常难以阅读和调试,因为它不明确查询的目的是什么。
使用SELECT *
的代码可能会在数据库结构发生更改时中断(按索引而不是按名称引用列几乎总是编写代码的错误方法)。
最后,检索更大的数据集 会影响速度,带宽和内存消耗,如果可以轻松避免,那么这是不可取的。
< / LI>就性能而言,JOIN
和行计数比选定列中的差异更有可能降低查询性能,但效率低下的习惯会在以后的项目中复杂化。即。测试平台应用程序可能没有性能问题,但是当事情扩展时,或者只能通过网络的受限带宽访问数据时,您会很高兴地编写明确的SELECT来开始。
请注意,如果您只是编写一次性查询来检查某些数据,我不会担心,但如果您正在为可能经常执行的代码库编写查询,那么编写好的查询和,必要时考虑存储过程。