仅查询特定列是否更快?

Fly*_*Fly 1 mysql sql performance select

我听说手动选择colums更快("col1,col2,col3等"),而不是用"*"查询它们.

但是如果我甚至不想查询表的所有列呢?查询是否更快,例如,"col1,col2,col3,col4"的"col1,col2"insteaf?

根据我的理解,SQL必须搜索所有列,只返回结果更改.我想知道我是否可以通过选择合适的列来获得性能提升.

(无论如何,我正在这样做,但我的一个应用程序的后端API返回的频率高于非所有列,因此我正在考虑让用户手动选择他想要的列)

Gor*_*off 6

通常,减少列中的列数select是次要优化.这意味着从数据库服务器向调用服务器的应用程序返回的数据较少.数据越少通常越快.

在大多数情况下,这是一个小的改进.在某些情况下,改进可能更重要:

  • 如果覆盖索引可用于查询,则索引满足查询而无需访问数据页.
  • 如果某些字段很长,那么记录占用多个页面.
  • 如果要检索的数据量是每个记录中总数据的一小部分(认为<10%).

单独列出列是个好主意,因为它可以保护代码免受底层模式的更改.例如,如果更改了列的名称,则显式列出列的查询将以易于理解的错误中断.这比运行并产生错误结果的查询更好.