Оптимизировать запрос, используя ru -gem-действие-as-taggable-on
Я использую в своем проекте gem акт-as-taggable-on. Однако для загрузки всех тегов требуется около 80-х годов.
Я добавил нетерпеливую загрузку в run_controller, но она не работает. Вот кусок кода:
def index
@runs = Measurement.includes(:tags).order( "run_name DESC" ).group( :run_name )#.descending #.order_by( :run => 'desc' )
respond_to do |format|
format.html # index.html.erb
format.json { render :json => @runs }
end
end
Я использую tag_list, который поддерживается Act-as-Taggable-On, для отображения тегов. Таким образом, использование активной загрузки измерений не влияет на производительность. Следующие две проблемы связаны со стековым потоком: act_as_taggable_on: как оптимизировать запрос?2. Оптимизация запросов с acts_as_taggable_on
Я посмотрел на файл журнала и обнаружил, что самая затратная часть загружает теги, как
ActsAsTaggableOn::Tag Load (69,9ms) SELECT tags
.* ОТ tags
ВНУТРЕННЕЕ СОЕДИНЕНИЕ taggings
НА tags
,id
знак равно taggings
,tag_id
ГДЕ taggings
,taggable_id
= 223866 И taggings
,taggable_type
= 'Измерение' И (taggings.context = 'теги' И taggings.tagger_id IS NULL)
ActsAsTaggableOn:: Загрузка тега (70,2 мс) SELECT tags
.* ОТ tags
ВНУТРЕННЕЕ СОЕДИНЕНИЕ taggings
НА tags
,id
знак равно taggings
,tag_id
ГДЕ taggings
,taggable_id
= 223854 И taggings
,taggable_type
= 'Измерение' И (taggings.context = 'теги'
Он получил тысячи запросов для загрузки тега, и каждый запрос стоил около 0,07 с. Эти следующие коды используются для отображения тегов.
= form_for (run), :remote => true, :method => :put, :html => { :class => "myform"} do |f|
=f.text_field :tag_list, :class => "tags"
Любая помощь? Благодарю.
2 ответа
Я только что столкнулся с этим сегодня. Вы можете загружать через tags
ассоциация, если вы не используете tag_list
метод.
Рассмотрели возможность перехода на https://github.com/tmiyamon/acts-as-taggable-array-on. Вам нужно будет использовать postgres в качестве базы данных.
Взгляните на этот http://adamnengland.wordpress.com/2014/02/19/benchmarks-acts-as-taggable-on-vs-postgresql-arrays