将 Model.all 拆分为不同的起始字母会减慢加载时间吗?

Does splitting Model.all into different starting letters slow load time down?

假设我有一个通用模型,名为 "Model",有几千个实例。现在我在页面上显示 Model.all,如下所示:

<% Model.all.order(:name).each do |model| %>
  <%= model.name %>
<% end %>

但我正在考虑按首字母拆分,如下所示:

A
<% Model.where(name.chars.first: "A").order(:name).each do |model| %>
  <%= model.name %>
<% end %>
B
<% Model.where(name.chars.first: "B").order(:name).each do |model| %>
  <%= model.name %>
<% end %>
C
<% Model.where(name.chars.first: "C").order(:name).each do |model| %>
  <%= model.name %>
<% end %>
...

等等。与直接 Model.all?

相比,此方法的加载时间会长得多吗?

您可以遍历 things 集合并在需要时插入起始字母:

things = Thing.order(:name)

current_letter = 'A'
things.each do |thing|
  if thing.name.chars.first != current_letter  
    current_letter = thing.name.chars.first    
    puts current_letter    
  end  
  puts thing.name # just as an example  
end