gpt4 book ai didi

mysql - 加速 Rails 中的查询

转载 作者:可可西里 更新时间:2023-11-01 08:06:35 24 4
gpt4 key购买 nike

我正在慢慢地从初级水平过渡到中级水平。在我的任务中,我遇到了加载某些查询所需时间的问题。

我想知道是否有人可以指出一些可以提高我的索引操作查询性能的事情。

运行 Rails 3.2.0、ruby 1.9.3p194 和 MySQL

现在我正在列出所有机构(大约 7000 个),加载需要 10 秒......

我的索引操作

  def index
@institution = Institution.includes(:state).all
end

查看

<tbody>
<% @institution.each do |c| %>
<tr>
<td><%= c.company %></td>
<td><%= c.state.name %></td>
<td><%= number_to_human(c.assets) %></td>
<td><%= c.hadademo %></td>
<td><%= c.datebecameclient %></td>
<td><%= c.clientorprospect %></td>
<% if current_user.admin? %>
<td><%= link_to 'Edit', edit_institution_path(c), :class => 'btn btn-mini btn-warning' %></td>
<% end %>
</tr>
<% end %>
</tbody>

制度模型

class Institution < ActiveRecord::Base
attr_accessible :company, :phone, :clientdate, :street, :city, :state_id, :zip, :source, :source2, :demodate1, :demodate2, :demodate3, :client, :prospect, :notcontacted, :solveid
belongs_to :state
has_many :users, :through => :company_reps
has_many :company_reps


def points
points_for_client + points_for_demodate1
end

def hadademo
if demodate3.present?
demodate3.to_date
elsif demodate2.present?
demodate2.to_date
elsif demodate1.present?
demodate1.to_date
else
"No Demo"
end
end

def datebecameclient
if clientdate.present?
clientdate.to_date
else
"Not a Client"
end
end

def clientorprospect
if client?
"Client"
elsif prospect?
"Prospect"
else
"No Contact"
end
end

def points_for_demodate1
if demodate1.present? && demodate1 >= Date.new(2012, 2, 23) or demodate2.present? && demodate2 >= Date.new(2012, 2, 23) or demodate3.present? && demodate3 >= Date.new(2012, 2, 23)
1
else
0
end
end

def clientcount
if client?
1
else
0
end
end

def points_for_client
if client?
10 / users.count
else
0
end
end


end

使用 Jquery Datatables

jQuery ->
$("#institutions").dataTable
sDom: "<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>"
sPaginationType: "bootstrap"

日志文件

Started GET "/institutions" for xxx.xxx.xxx.xxx at 2012-11-13 02:51:47 +0000
Processing by InstitutionsController#index as HTML
Rendered layouts/_messages.html.erb (1.2ms)
Rendered institutions/index.html.erb within layouts/application (37190.3ms)
Rendered layouts/_messages.html.erb (0.1ms)
Rendered layouts/_navbar.html.erb (17.0ms)
Completed 200 OK in 43334ms (Views: 37983.7ms | ActiveRecord: 340.7ms)
Rendered institutions/index.html.erb within layouts/application (34329.1ms)
Rendered layouts/_messages.html.erb (0.1ms)
Rendered layouts/_navbar.html.erb (23.3ms)
Completed 200 OK in 38824ms (Views: 34374.8ms | ActiveRecord: 82.2ms)

最佳答案

如果查看日志,您会发现所有时间都花在了呈现 View 上,而不是实际的查询上。您肯定希望实现 View 或操作缓存来加快速度。

official docs将为您指明正确的方向。

关于mysql - 加速 Rails 中的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13355059/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com