我正在以这种方式从我的 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/