【发布时间】:2014-08-23 14:49:24
【问题描述】:
我正在使用数据阅读器从 sqlite 数据库中检索数据。 这是在双 for 循环中执行的。但是很慢,因为现在要执行多次sql查询。
有没有更快的方法来做到这一点? 这是我现在正在做的简短版本:
for(int i=0;i < horizontal; i++)
{
for(int j=0;j < vertical; j++)
{
SQLiteConnection con = new SQLiteConnection(dbConnection);
con.Open();
SQLiteCommand cmd = new SQLiteCommand(con);
cmd.CommandText = query;
SQLiteDataReader reader = cmd.ExecuteReader();
dt.Load(reader);
con.Close();
// Perform some actions onto DataTable data
}
}
编辑: 在循环之前打开和关闭并没有多大帮助。 我正在尝试查询位置列在 4 点之间的表的所有行,对其执行一些计算并移动到下一个单元格(想想网格)。
【问题讨论】:
-
不需要在循环中频繁创建 SQLiteConnection 对象。在循环之前创建它并在循环之后关闭它。
-
试过了,但不是真正的解决方案。问题是执行水平 * 垂直时间的查询。但我不知道如何才能减少这个。
-
能否展示一下 SQL 查询并解释嵌套循环的目的是什么以及它如何影响查询?
-
嵌套循环会影响从数据库中选择的数据(其中 x BETWEEN xmin AND xmax AND y BETWEEN ymin AND ymax)。