SQL中SELECT*的任何缺点?

Fer*_*mac 3 sql select

假设我有一个执行SQL的程序,我想在表中查询A,B和C列中的值(假设有些列我并不严格需要).SELECT*和SELECT A,B,C之间有什么区别?

我的想法到目前为止.仅选择您需要的列:

  • ...将需要更少的内存来存储结果.
  • ...可能会使解析程序中的结果更容易一些.
  • ...将不会更快,除非所选列都可以使用覆盖索引检索.

我觉得可能还有其他问题在起作用.

smv*_*smv 5

你说的是正确的,但还有更多.

"select*"的另一个非常重要的问题是如果表架构发生更改会发生什么.如果客户端使用"select*",它将获得一组可能意外的列(更多列,更少列,不同顺序......).这真是太糟了.

如果客户端选择了它想要的确切列名(A,B,C),那么它将获得具有预期格式(如果可能)的结果集或特定的明显错误.

此外,用于选择不需要的列的内存消耗和可能的网络流量问题对于"大"应用程序可能是至关重要的.