pil*_*ght 5 mysql sql performance select sql-update
这个说法是真是假
这些查询的性能
SELECT * FROM table;
UPDATE table SET field = 1;
SELECT COUNT(*) FROM table;
Run Code Online (Sandbox Code Playgroud)
是相同的
或者有没有一种情况,其中一个的性能会与另一个有很大的不同?
当您说“性能”时,您的意思是“执行它们需要多长时间”?
所有这三个查询都在做完全不同的事情。因此,可以合理地得出结论,这三者将花费不同的时间来完成。
最重要的是,你为什么问这个问题?你想解决什么问题?我有一种不好的感觉,你问这个问题是在走错路。
涉及不同的资源类型:
问题中的UPDATE查询是最难的:它将导致该表的所有磁盘页面被提取、放入缓冲区、更改为新缓冲区并写回磁盘。在正常情况下,它还会导致其他进程被锁定,从而产生争用甚至更大的缓冲压力。
该SELECT *查询需要的所有网页,也; 它需要将它们全部转换/格式化为前端格式并将它们发送回前端。
SELECT COUNT(*)在所有资源上,这是最便宜的。在最坏的情况下,必须获取所有磁盘页面。如果存在索引,则需要较少的磁盘 I/O 和缓冲区。CPU 成本仍然可以忽略(恕我直言),“终端”输出是微不足道的。