将 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
假设我有一个通用模型,名为 "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