我知道使用内联查询很糟糕但是我们正在研究遗留系统,我们有一个内联查询,它在不到一秒的时间内获取了19000条记录,我的问题是while循环需要60多秒才能读取记录并走出循环,有没有办法优化逻辑并快速处理记录。
以下是逻辑,感谢您的帮助。
using (OracleDataReader dr = cmd.ExecuteReader())
{
List<FunctionTest> listOfTests = new List<FunctionTest>();
List<string> functionTestNames = new List<string>();
while (dr.Read())
{
string functionTestId = (dr.IsDBNull(dr.GetOrdinal("FUNCTIONTest")) ? string.Empty : dr.GetString(dr.GetOrdinal("FUNCTIONTest")));
string functionTestName = (dr.IsDBNull(dr.GetOrdinal("FUNCTIONTestNAME")) ? string.Empty : dr.GetString(dr.GetOrdinal("FUNCTIONTestNAME")));
FunctionTest TestData = new FunctionTest
{
id = functionTestId,
name = functionTestName
};
if (!functionTestNames.Contains(TestData.name.ToUpper()))
{
listOfTests.Add(TestData);
functionTestNames.Add(TestData.name.ToUpper());
}
}
Tests.Test = listOfTests.ToArray();
}
当我们在查询中使用distinct时,执行时间超过100秒因此我在寻找优化逻辑的帮助