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

Смежные вопросы