草庐IT

索引优化查询

全部标签

ruby-on-rails - Rails,如何避免 "N + 1"查询关联中的总数(计数、大小、counter_cache)?

我有这些模型:classChildren我现在需要的是在“电影院”的页面中,我想为那个电影院的电影打印children的总和(数量,大小?),所以我这样写:在cinemas_controller.rb中:@childrens=@cinema.childrens.uniq在cinemas/show.html.erb:但显然我有bulletgem提醒我Counter_cache并且我不知道把这个counter_cache放在哪里因为电影的不同id。而且在没有counter_cache的情况下,我所拥有的也不是我想要的,因为我想要计算该电影院中有多少child从该电影院许多天的门票中拿走了他

ruby-on-rails - 数组上的 rails where() sql 查询

我会尽可能详细地解释这一点。我对用户帖子有疑问:@selected_posts=Posts.where(:category=>"棒球")我想写下面的语句。这是伪术语:User.where(用户在@selected_posts中有帖子)请记住,我设置了多对多关系,因此post.user可用。有什么想法吗?/编辑@posts_matches=User.includes(@selected_posts).map{|user|[user.company_name,user.posts.count,user.username]}.sort基本上,我需要上面的工作,以便它使用在selected_p

ruby - 将哈希数组转换为哈希哈希,由哈希的属性索引

我有一个散列数组,表示对象作为对API调用的响应。我需要从一些散列中提取数据,一个特定的键用作散列对象的id。我想将数组转换为散列,其中键作为ID,值作为具有该ID的原始散列。我说的是:api_response=[{:id=>1,:foo=>'bar'},{:id=>2,:foo=>'anotherbar'},#..]ideal_response={1=>{:id=>1,:foo=>'bar'},2=>{:id=>2,:foo=>'anotherbar'},#..}我可以想到两种方法。将数据映射到ideal_response(下)使用api_response.find{|x|x[:id

ruby - mongoid查询缓存

Rails的ActiveRecord有一个称为查询缓存(ActiveRecord::QueryCache)的功能,它在请求的生命周期内保存SQL查询的结果。虽然我不太熟悉实现的内部结构,但我认为它将查询结果保存在Rackenv中的某个位置,该结果在请求结束时被丢弃。不幸的是,Mongoid当前不提供这样的功能,并且由于某些查询隐式发生(引用)这一事实而加剧了这种情况。我正在考虑实现此功能,而且我很好奇,应该在何处以及如何连接Mongoid(或者,也许是mongo驱动程序?)以实现此功能。 最佳答案 Mongoid有缓存,在http:

ruby - 使用索引无限次地做某事

在morerubywayofdoingprojecteuler#2,部分代码为while((v=fib(i))有没有办法将i+=1变成更函数式的编程风格结构?我能想到的最好的是Float::MAX.to_i.timesdo|i|v=fib(i)breakunlessv因为您不能对float调用.times。 最佳答案 Numeric.step具有无穷大(极限)和1(步长)的默认参数。1.stepdo|i|#...end为了好玩,你甚至可能想尝试一下1.step.size 关于ruby-使

ruby-on-rails - 如何优化 active_admin

上次我遇到active_admin的问题.在我有5000多行数据的表中,它的工作速度非常慢。我该如何优化它?也许有人知道这个模块的一些异步加载插件? 最佳答案 您可以做几件事。默认情况下,ActiveAdmin将关联加载为索引页面上的下拉过滤器。如果未使用这些过滤器,将它们移除会有所帮助,因为它们会实例化该模型的每条记录以构建下拉列表。ActiveAdmin.registerPostdoremove_filter:categoriesend如果您的索引页包含依赖于关联记录的列,则预先加载它们会有所帮助。ActiveAdmin.reg

带有索引/偏移量的 Ruby gsub?

Ruby的String#gsub方法提供了一种包含替换索引的方法?例如,给定以下字符串:Ilikeyou,you,you,andyou.我想以这个输出结束:Ilikeyou1,you2,you3,andyou4.我知道我可以使用\1、\2等来匹配括号中的字符,但是有没有像\i这样的东西或\n提供当前比赛的号码?值得一提的是,我的实际术语不像“你”那么简单,因此假设搜索术语是静态的替代方法是不够的。 最佳答案 我们可以将with_index链接到gsub()以获得:foo='Ilikeyou,you,you,andyou.'.gsub

ruby-on-rails - 使用 add_reference 时指定自定义索引名称

我有以下迁移classLinkDoctorsAndSpecializations当我运行rakedb:migrate时出现错误表“doctors”上的索引名称“index_doctors_on_doctor_specialization_type_and_doctor_specialization_id”太长;限制为63个字符那么在使用add_reference时如何指定索引名称,就像我们在add_index:table,:column,:name=>'indexname'中指定的那样 最佳答案 作为我commented,做:add

sql - 使用 SQL IN 和 SQL OR 运算符的 Rails 3 ActiveRecord 查询

我正在使用“where”语法编写一个Rails3ActiveRecord查询,它同时使用了SQLIN和SQLOR运算符,但不知道如何同时使用它们。此代码有效(在我的用户模型中):Question.where(:user_id=>self.friends.ids)#note:self.friends.idsreturnsanarrayofintegers但是这段代码Question.where(:user_id=>self.friends.idsOR:target=>self.friends.usernames)返回这个错误syntaxerror,unexpectedtCONSTANT,

ruby-on-rails - 如何修复 Rails 中 pg_attribute 表的缓慢隐式查询

在我们的生产环境中,我们注意到Rails应用程序频繁出现峰值(大约每1小时一次)。深入挖掘,这是由于以下查询在单个HTTP请求中累计运行时间超过1.5秒(称为100倍)。SELECTa.attname,format_type(a.atttypid,a.atttypmod),pg_get_expr(d.adbin,d.adrelid),a.attnotnull,a.atttypid,a.atttypmodFROMpg_attributeaLEFTJOINpg_attrdefdONa.attrelid=d.adrelidANDa.attnum=d.adnumWHEREa.attrelid=