代码之家  ›  专栏  ›  技术社区  ›  Chad Moran

多个查询以避免连接?

  •  5
  • Chad Moran  · 技术社区  · 17 年前

    我注意到,一旦我在一些查询中添加了联接,执行这些联接所花费的时间就不仅仅是完成多个查询。


    159毫秒


    考虑到多个查询似乎对性能有如此重大的影响,我是否应该继续进行多个查询而不是连接?我甚至可以优化多查询方法,因为在这些测试中我甚至懒得加载。

    编辑

    表格对象


    CategoryID(整数,非聚集索引)



    ID(int、标识、PK、聚集索引)

    6 回复  |  直到 17 年前
        1
  •  5
  •   AvatarKava    17 年前

    如果我必须根据我在这里掌握的有限信息给出一个可能的罪魁祸首,那就是缺少索引。您要加入的字段是否已正确索引?这可以获得巨大的性能提升。第二,你加入了合适的领域吗?例如,如果你将两个字符串连接在一起,你的性能将比连接整数或其他优化字段差得多。

        2
  •  4
  •   Guffa    17 年前

    select a.Some, b.Other
    from TableA a
    inner join TableB b on b.Id = a.Id
    

        3
  •  2
  •   Philip Fourie    17 年前

        4
  •  1
  •   TheTXI    17 年前

        5
  •  1
  •   gkrogers    17 年前

    如果你运行这些只是为了在查询分析器中获取数据,那么多个查询是可以的,但如果你从web应用程序或控制台应用程序运行它们,那么你需要优化为1个查询。即使需要更长的时间,您也会看到性能的提高,因为您不会多次访问数据库。你的数据库越少,你的前端性能就越好。我会努力重新做你的查询,使其只有一个。看起来你的表已经过规范化和索引,你应该能够将其归结为一个查询。

        6
  •  0
  •   Maxime Lorant Ashana.Jackol    12 年前

    我会尽量摆脱所有典型的连接。例如,我想修改:

    select t1.id, t1.name, t2.gpa from t1 join t2 on t1.id =t2.id 
    

    通过以下方式:

    select t1.id, t1.name, t2.gpa from t1, t2 where t2.id = t1.id