Filtrelemeden Önce Sıralama (ARCH6076)
Anahtar ruby.performance.orderby-before-where · Önem warning · Kategori performance
Bir koleksiyon zincirinde sıralamayı filtreden önce yapmak, gereğinden büyük bir kümeyi sıralar. Önce filtreleyip sonra sıralayın.
Hatalı
Bölüm başlığı “Hatalı”def top_active(users) users.sort_by(&:created_at) .select(&:active?) .first(10)enddef top_active(users) users.select(&:active?) .sort_by(&:created_at) .first(10)endDüzeltme
Bölüm başlığı “Düzeltme”Zincirde filtreyi sıralamadan önce uygulayın; böylece daha küçük bir küme sıralanır.