SQL-select字段和select *的区别

发布于 2016-11-06 10:33:48 字数 66 浏览 1291 评论 4

select 表中所有字段 和 select * 相比,性能上有什么区别呢?普遍都说前者性能高,但是具体的原因是什么?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

清晨说ぺ晚安 2017-08-26 23:27:47

算法上的解析对性能没有太大影响,主要还是存储的性能
如果一张表有20个字段,select *取全部数据,select field1,field2只取2个字段,如果有10万条数据可以查询出来,那么对存储的操作差异就非常大,除非数据都在内存里面
所以select * 和select20个字段名性能上是没有什么差异的,主要是select具体字段的时候可以按需取字段,减少对数据库从硬盘读取数据的次数。

灵芸 2017-03-23 23:56:51

我理解, select * 在解析sql时有一个 查询表的字段 重新拼接sql的过程, 如:

mysql> explain extended select * from x;
...

mysql> show warnings;
+-------+------+--------------------------------------------------+
| Level | Code | Message |
+-------+------+--------------------------------------------------+
| Note | 1003 | select `test1`.`x`.`id` AS `id` from `test1`.`x` |
+-------+------+--------------------------------------------------+
1 row in set (0.00 sec)

可以看到实际上 最终执行的sql里, 字段名已经包含了.

想挽留 2016-11-27 22:23:07

如果不是返回全部,那么区别在于传输的数据大小,数据的大小影响到响应的时间

如果请求少,数据量小时无所谓,反之则影响很大

清晨说ぺ晚安 2016-11-21 17:09:56

select field1,field2,…… 在查询的时候,直接就可以进行匹配查找数据,而select ,它需要把号展开,解析成表中的所有字段,然后再做查询,多了一步操作,所以,它的性能不如select field1,field2,……这种形式的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文