我以这种方式从我的 ruby on rails 应用程序中查询 postgreSQL DB:
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 ms。
我从 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 ms。
我认为某些缓存可能是执行时间不同的原因,但是如果我尝试在 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 ms和327.8 ms的执行时间。
由于这两个查询是相同的,我不应该期望 RoR 和提示中的执行时间相同吗?
提前感谢您的任何想法。