在我的代码中,我有一个像这样的查询
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的性能吗?
由于
编辑:是否有可能它依赖于表“人”中不在查询中的列? (例如,此表中有很多ntext列)
答案 0 :(得分:1)
您的查询是否会返回多行?
SqlDataReader
流式传输数据。 GetValue
调用可能正在等待更多行进行流式处理,并且由于查询更复杂,在第二种情况下需要更长的时间才会发生。
答案 1 :(得分:0)
你能试试吗
SELECT p.id,name
FROM people p left join people_died d
on p.id = d.id
WHERE d.id is null
可能会提高您的表现
答案 2 :(得分:0)
我对我的问题有一个答案:是的
在我的原始查询中,我有一个非常大的IN子句(大约1400 id),我删除了这个子句,并且对getValue的调用现在具有正常的执行时间,所以我必须找到一个解决方法
非常感谢