代码之家  ›  专栏  ›  技术社区  ›  remi bourgarel

sqldatareader.getValue查询是否依赖?

  •  0
  • remi bourgarel  · 技术社区  · 16 年前

    在我的代码中,有一个这样的查询

    SELECT id,name
    FROM people
    

    我使用sqldatareader检索数据。

    如果我更改我的查询

    SELECT id,name
    FROM people
    WHERE NOT EXISTS(
    SELECT *
    FROM people_died
    WHERE people_died.id = people.id
    )
    

    我可以用dottrace看到,对getValue的调用在第二个查询中花费的时间更长,所以我想知道为什么…

    如果您确定这不是好的原因,您能告诉我什么可能影响sqldatareader.getValue的性能吗?

    谢谢

    编辑:它是否可能依赖于查询中不存在的表“people”中的列?(例如,此表中有许多ntext列)

    3 回复  |  直到 16 年前
        1
  •  1
  •   LukeH    16 年前

    查询是否返回多行?

    一 SqlDataReader 传输数据。很可能 GetValue 调用正在等待更多的行流入,而在第二种情况下,由于查询更复杂,这需要更长的时间。

        2
  •  0
  •   Beth    16 年前

    你能试试吗

    SELECT p.id,name
    FROM people p left join people_died d
    on p.id = d.id
    WHERE d.id is null
    

    可能会提高你的表现

        3
  •  0
  •   remi bourgarel    16 年前

    我有一个问题的答案:是的

    在最初的查询中,我有一个非常大的in子句(ID大约为1400),我删除了这个子句,对getValue的调用现在有一个正常的执行时间,所以我必须找到一个解决方法

    不管怎样,谢谢

    推荐文章