ruby-on-rails - 从 RoR 查询 postgreSQL 比从提示查询慢?

标签 ruby-on-rails postgresql execution-time pgrouting

我正在以这种方式从我的 ruby​​ on rails 应用程序查询 postgreSQL 数据库:

var = Map.connection.execute("
SELECT * 
FROM shortest_path('SELECT * FROM japan WHERE japan.geom_way && ST_MakeEnvelope(139.68012, 35.63993, 139.71918, 35.66024)', 242945, 582735, false, false) 
JOIN japan ON edge_id = id;")

rails 服务器控制台中显示的执行时间为 327.8 毫秒

我从 psql promtp 执行相同的查询:

SELECT * 
FROM shortest_path('SELECT * FROM japan WHERE japan.geom_way && ST_MakeEnvelope(139.68012, 35.63993, 139.71918, 35.66024)', 242945, 582735, false, false) 
JOIN japan ON edge_id = id;

执行时间为53.108 毫秒

我认为某些缓存可能是执行时间不同的原因,但如果我尝试在 Rails 应用程序中连续执行同一个查询 2 次,则 1 个查询的执行时间不会改变。例如:

var = Map.connection.execute("SELECT * FROM shortest_path('SELECT * FROM japan WHERE japan.geom_way && ST_MakeEnvelope(139.68012, 35.63993, 139.71918, 35.66024)', 242945, 582735, false, false) JOIN japan ON edge_id = id;") 
var = Map.connection.execute("SELECT * FROM shortest_path('SELECT * FROM japan WHERE japan.geom_way && ST_MakeEnvelope(139.68012, 35.63993, 139.71918, 35.66024)', 242945, 582735, false, false) JOIN japan ON edge_id = id;")

给出 330.7 毫秒327.8 毫秒 的执行时间。

由于 2 个查询是相同的,我不应该期望 RoR 和提示中的执行时间相同吗?

提前感谢任何想法。

最佳答案

关于ruby-on-rails - 从 RoR 查询 postgreSQL 比从提示查询慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11084575/

相关文章:

algorithm - 计算一个数字的位数 - 这两种解决方案哪个更快?

php - PHP 脚本中的最大执行时间错误,这是绕过它的好方法吗?

ruby-on-rails - 对象ID和youtube视频ID与youtube_it gem相同

java - 通过 java JDBC 检查 postgres 数据库中的记录是否更新

Angularjs:具有直通关系的多对多

sql - Postgres : Timestamp bigger than now

python - 如何在比较两个长二维列表时减少执行时间

ruby-on-rails - 使用 link_to 传递 url 参数?

ruby-on-rails - 如何防止嵌套创建在 ActiveRecord 中使用作用域 has_many 失败?

javascript - 使用 remote = true 从 JS 更新 Rails View