假设我有一个执行 SQL 的程序,并且我想在表中查询 A、B 和 C 列中的值(假设有一些列我并不严格需要)。 SELECT * 和 SELECT A、B、C 有什么区别?
到目前为止我的想法如下。仅选择您需要的列:
- ...将需要更少的内存来存储结果。
- ...可能会使解析程序中的结果变得更容易一些。
- ...不会更快,除非所选列都可以使用覆盖索引检索。
但我觉得可能还有更多问题在起作用。
你说的是对的,但还有更多。
“select *”的另一个非常重要的问题是如果表架构发生更改会发生什么。
如果客户端使用“select *”,它将获得一组可能意外的列(更多列、更少列、不同顺序...)。这真是太糟了。
如果客户端选择了它想要的确切列名(A、B、C),那么它将获得具有预期格式(如果可能)或特定的明显错误的结果集。
此外,内存消耗问题以及用于选择不需要的列的可能的网络流量问题对于“大型”应用程序来说可能是至关重要的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)