SQLite:.Net比本机慢得多?

时间:2012-01-08 12:23:38

标签: c# performance sqlite system.data.sqlite database-performance

这是我的问题:

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;
}

1 个答案:

答案 0 :(得分:0)

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