最近、 awesome_nested_set gemに大きく依存する既存のプロジェクトの作業を開始し、そのメソッドのいずれかをself_and_descendants
使用しました。
このメソッドは、すべての子をプルするという点で重すぎて、多くのクエリをトリガーします。インデックスを作成していますが、このパフォーマンスの問題から抜け出すための代替手段を探しています。
トリガーされる Sql の例
q = Group.first
q.self_and_descendants
上記のコードは以下のクエリをトリガーします。さらに多くのクエリがあり、一部のみが貼り付けられています
Group::Translation Load (0.3ms) SELECT `group_translations`.* FROM `group_translations` WHERE `group_translations`.`group_id` = 2231
Group::Translation Load (0.3ms) SELECT `group_translations`.* FROM `group_translations` WHERE `group_translations`.`group_id` = 2233
Group::Translation Load (0.4ms) SELECT `group_translations`.* FROM `group_translations` WHERE `group_translations`.`group_id` = 2239
Group::Translation Load (0.3ms) SELECT `group_translations`.* FROM `group_translations` WHERE `group_translations`.`group_id` = 2240
Group::Translation Load (0.3ms) SELECT `group_translations`.* FROM `group_translations` WHERE `group_translations`.`group_id` = 2241
Group::Translation Load (0.3ms) SELECT `group_translations`.* FROM `group_translations` WHERE `group_translations`.`group_id` = 2242
Group::Translation Load (0.3ms) SELECT `group_translations`.* FROM `group_translations` WHERE `group_translations`.`group_id` = 2252