Вот мой запрос:
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 возвращает результат в течение 78 мс, но из среды .Net sqlite это занимает почти 1400 мс.
Есть предложения?
У меня есть этот запрос в моей структуре 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;
}