고유 인덱스 존재로 인해 Distinct 제거 가능

theme.rb 파일에는 ChildTheme.where(parent_theme_id: theme_id).distinct.pluck(:child_theme_id)가 있으며, discourse/db/migrate/20170313192741_add_themes.rb에서 추가된 고유 인덱스(add_index :child_themes, [:parent_theme_id, :child_theme_id], unique: true) 덕분에 distinct를 제거할 수 있습니다.

이는 두 개의 자식 테마, 즉 ChildTheme1(id1, child_theme_id1, parent_theme_id)와 ChildTheme2(id2, child_theme_id2, parent_theme_id)에 대해 child_theme_id1 == child_theme_id2인 경우, id1 = id2가 되어야 한다는 것을 의미합니다. 그렇지 않으면 [:parent_theme_id, :child_theme_id]가 유일하지 않게 됩니다. 따라서 ChildTheme.where(parent_theme_id: theme_id).pluck(:child_theme_id)는 고유한 child_theme_id 값을 반환하므로 distinct 함수 호출이 불필요합니다. 이를 제거하면 성능을 향상시킬 수 있습니다.

네, 이 변경 사항을 포함해 풀 리퀘스트를 제출해 보시는 게 좋겠어요.

성능 측면에서는 차이가 없지만, 가독성이 약간 향상되므로 이 PR을 지지합니다.

Update theme.rb - Pull Request #8472 - discourse/discourse - GitHub 제출됨