代码之家  ›  专栏  ›  技术社区  ›  Rei Miyasaka

返回包含blog文本的整个表而不是选择特定列的性能

  •  4
  • Rei Miyasaka  · 技术社区  · 14 年前

    我认为这是一个非常常见的场景:我有一个网页,返回最近10篇博客的链接和摘录。

    如果我将查询限制为只包含所需的列,那么我将定义另一个类,该类将只包含那些必需的字段。

    如果我要查询整行,性能会受到多大的影响?我需要的东西值得选吗?

    3 回复  |  直到 14 年前
        1
  •  2
  •   DVK    14 年前

    答案是“视情况而定”。

    1. covering indexes ? 例如,如果有一个索引包含较小查询中的所有列,那么较小的列集在性能方面将非常有利,因为该索引将在不读取任何行的情况下读取。

      • 如果比率很大(例如,整行大3倍),那么您可能在IO(用于检索)和网络(用于传输)成本方面都有显著的节省。

      • 如果这个比率更像是10%的收益,那么就DB性能增益而言,它可能是不值得的。

        2
  •  2
  •   Mitch Wheat    14 年前

    但是,只返回所需的列会增加这样一种可能性,即有一个覆盖索引可用于满足查询,这会大大缩短查询的执行时间。

        3
  •  1
  •   Jason Kester    14 年前

    ,因为您指定它用于10个记录,所以答案从“it dependent”更改为 别再为这事操心了 ".

    除非您的服务器在另一个国家使用拨号连接,否则10条记录的连线时间将为零,无论您每行删除多少字节。这根本不值得优化。

    为了获得额外的信任,一旦您开始以每秒10倍以上的速度发出这个主页查询,您就可以在服务器上添加缓存,以避免重复访问数据库。这将比优化查询得到更多的回报。