这是我的问题:
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<string, object> 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;
}
答案 0 :(得分:0)
预计访问数据库的非本机方式比访问相同数据库的本机方式更慢,可能更慢。但是等一下,看看是否有人出现之前有过这个问题的人,并且能够找到某种解决方案。同时,如果您准确地显示如何从dotnet中执行此查询,则可能会有所帮助。