4

Я бы хотел оптимизировать приложение Rails 3.2.13, которое в настоящее время использует postgis через git-устройство activerecord-postgis-adapter.Rails postgis adapter делает много запросов в таблице «geometry_columns»

Проблема заключается в том, что когда я делаю запрос в таблице, даже если в нем есть только обычные поля (без географии/геометрии/такого рода материалов), этому запросу предшествует другой запрос в postgis "geometry_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 только в моей таблице пользователей/модели.

Кто-нибудь знает, как я могу избежать ненужных запросов?

Спасибо всем.

+0

Это также происходит с Rails 4 – Nicolas

ответ

0

Я верю, что это ответ на ваш вопрос: https://github.com/rgeo/rgeo/issues/29. Из номера выпуска:

Адаптеры activerecord выдают эти выборки для определения структуры базы данных. Они не бесполезны. В случае выбора, указанного выше, необходимо определить, имеет ли эта таблица или нет какие-либо геопространственные столбцы (и если да, то какие столбцы они и как они настроены). Если вы используете адаптер postgis, то, вероятно, вы также заметите выбор из pg_attribute и, возможно, несколько других. Все они являются частью того, как activerecord делает свою магию.

Хорошая новость: я считаю, что activerecord кэширует всю структурную информацию, которую он собирает в нерабочих средах, поэтому вы должны видеть, что они выбираются только один раз для каждой таблицы, для каждого процесса рельсов. Они должны быть довольно безвредными даже для таблиц без пространственных столбцов.