Ruby on rails Rails postgis适配器在表中进行大量查询;几何图形“U柱”;

Ruby on rails Rails postgis适配器在表中进行大量查询;几何图形“U柱”;,ruby-on-rails,ruby-on-rails-3.2,gis,postgis,rails-postgresql,Ruby On Rails,Ruby On Rails 3.2,Gis,Postgis,Rails Postgresql,我想通过activerecord postgis适配器gem优化我目前使用postgis的Rails 3.2.13应用程序 问题是,当我在一个表中进行查询时,即使其中只有常规字段(没有地理/几何/这类内容),该查询也会在postgis“geometry\u columns”表的另一个查询之前进行 例如: (5.6ms) SELECT * FROM geometry_columns WHERE f_table_name='srlzd_infos' SrlzdInfo Load (1.1ms)

我想通过activerecord postgis适配器gem优化我目前使用postgis的Rails 3.2.13应用程序

问题是,当我在一个表中进行查询时,即使其中只有常规字段(没有地理/几何/这类内容),该查询也会在postgis“geometry\u columns”表的另一个查询之前进行

例如:

(5.6ms)  SELECT * FROM geometry_columns WHERE f_table_name='srlzd_infos'
  SrlzdInfo Load (1.1ms)  SELECT "srlzd_infos".* FROM "srlzd_infos" WHERE "srlzd_infos"."user_id" = 1009 LIMIT 1
但我只在我的用户表/模型中使用postgis

有人知道如何避免这些不必要的查询吗


谢谢大家。

我相信这回答了你们的问题:。本期:

activerecord适配器发出这些选择以确定数据库的结构。它们不是无用的。在上面的select you注释中,精确地确定该表是否包含任何地理空间列(如果包含,则确定它们是哪些列以及如何配置)。如果您使用的是postgis适配器,那么您可能还会注意到针对pg_属性的选择,以及其他一些选择。它们都是activerecord发挥魔力的一部分

好消息是,我相信activerecord缓存了它在非开发环境中收集的所有结构信息,所以您应该在每个表、每个rails进程中只看到一次这些选择。即使对于没有空间列的表,它们也应该是无害的


Rails 4也会发生这种情况