而Loop则需要更多时间来处理执行阅读器

时间:2017-08-31 06:26:14

标签: c# sql asp.net-mvc entity-framework ado.net

我知道使用内联查询很糟糕但是我们正在研究遗留系统,我们有一个内联查询,它在不到一秒的时间内获取了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秒因此我在寻找优化逻辑的帮助

0 个答案:

没有答案