SQLite:.Net比本机慢得多?

这是我的查询:

SELECT * FROM [GeoName] WHERE ((-26.3665122100029-Lat)*(-26.3665122100029-Lat))+((27.5978928658078-Long)*(27.5978928658078-Long)) < 0.005 ORDER BY ((-26.3665122100029-Lat)*(-26.3665122100029-Lat))+((27.5978928658078-Long)*(27.5978928658078-Long)) LIMIT 20 

这将返回20个最近点。

在本机sqlite中运行它会在78ms内返回一个结果,但是在.Net sqlite环境中,它需要将近1400ms。

有什么建议?

我在我的ORM结构中使用参数化值进行此查询。 还尝试过将其作为原生文本查询。

运行查询的代码(在我的ORM层中):

 private static IDataReader CallSqlReader(string SqlStatement, Dictionary parameters) { ConnectionCheck(); try { var cmd = conn.CreateCommand(); cmd.CommandText = SqlStatement; cmd.CommandType = CommandType.Text; foreach (var item in parameters) { cmd.Parameters.AddWithValue(item.Key, item.Value); } return cmd.ExecuteReader(); } catch { } return null; } 

预计访问数据库的非本地方法比访问相同数据库的本机方式更慢,可能更慢。 但是等一下,看看有人出现之前有过这个问题的人,并且能够找到某种解决方案。 同时,如果您准确地显示如何从dotnet中执行此查询,它可能会有所帮助。