代码之家  ›  专栏  ›  技术社区  ›  lindelof

优化MySQL中大型表的单行查询

  •  2
  • lindelof  · 技术社区  · 16 年前

    我正在处理MySQL表,这些表基本上是在一个单百叶窗的模拟办公室中进行光线跟踪模拟的结果。我通常需要检索一个独特的时间和盲人设置组合的模拟结果。所以我最终做了很多

    SELECT result FROM results WHERE timestamp='2005-05-05 12:30:25' \
             AND opening=40 AND slatangle=60
    

    这看起来是可疑的最佳化,因为这个查询永远不应该返回多行。在三列上定义唯一标识每行的索引是否有意义?或者我可以使用其他技术吗?

    4 回复  |  直到 16 年前
        1
  •  3
  •   mlarsen    16 年前

    答案是肯定的。如果您在timestamp上定义了一个唯一的索引,那么opening和slateangle mysql应该能够找到您的行,并且查找的光盘很少。

    您可以尝试创建一个关于时间戳、打开、slateangle和结果的索引。MySQL可以从索引中提取数据,而不必接触数据文件。

    MySQL手册有一个 section about optimzing queries .

        2
  •  3
  •   William Macdonald    16 年前

    我建议增加 极限1; 到查询的结尾。

    威廉

        3
  •  2
  •   Jim    16 年前

    我不建议添加3个索引。使用这三列的索引可能更好,甚至在该组合上设置主键unique也是最好的——前提是您确定它是唯一的。

        4
  •  2
  •   Joe Kuan    16 年前