Rails-5 ActiveRecord PostgreSQL-9.6为单个SQL查询启用_NESTLOOP -- sql 领域 和 ruby-on-rails 领域 和 postgresql 领域 和 activerecord 领域 和 ruby-on-rails-5 领域 相关 的问题

rails-5 activerecord postgresql-9.6 enable_nestloop for a single sql query


简体版||繁體版
1
vote

问题

中文

我正在尝试打开并关闭 postgreesql enable_nestloop 在ActiveRecord使用RAW SQL中的单个查询。这是命令

   class Segment < ApplicationRecord    def self.count_payload_kind       s = "         SET LOCAL enable_nestloop = off;         SELECT count(*)        FROM   segments s        WHERE  s.payload @> '[{"kind":"person"}]';         SET LOCAL enable_nestloop = on;      "       ActiveRecord::Base.connection.execute(s).to_a     end  end   

当我打电话 activeLecord :: base.connection.execute(s).to_a ,它没有返回任何记录并没有抛出错误。但是,如果我删除了对 set local enable_nestloop

的2个调用,它可以正确工作

如何为一个查询打开和关闭启用_NEESTLOOP。

英文原文

I am trying to turn on and turn off postgresql enable_nestloop for a single query in activerecord using raw SQL. Here is the command

 class Segment < ApplicationRecord    def self.count_payload_kind       s = "         SET LOCAL enable_nestloop = off;         SELECT count(*)        FROM   segments s        WHERE  s.payload @> '[{\"kind\":\"person\"}]';         SET LOCAL enable_nestloop = on;      "       ActiveRecord::Base.connection.execute(s).to_a     end  end 

When I call ActiveRecord::Base.connection.execute(s).to_a, it doesn't return any record and throws no error. However, it works correctly if i remove the 2 calls to SET LOCAL enable_nestloop

How can I turn enable_nestloop on and off for one query.

              

回答列表

1
 
vote
vote
最佳答案
 

从我的Rails 4.2.6和PostgreSQL 9.5.4上,在交易中括起来可能工作。

  $_POST1  

SQL输出

  $_POST2  
 

From my testing on Rails 4.2.6 and postgresql 9.5.4, wrapping the call in a transaction might work.

result = ActiveRecord::Base.transaction do   ActiveRecord::Base.connection.execute("SET LOCAL enable_nestloop = off;")   r = ActiveRecord::Base.connection.execute("     SELECT count(*)       FROM projects      WHERE active;   ")   ActiveRecord::Base.connection.execute("SET LOCAL enable_nestloop = on;")   r end  result.values.flatten => ["1"] 

SQL output

(4.3ms)  BEGIN (6.8ms)  SET LOCAL enable_nestloop = off; (98.3ms)   SELECT count(*)     FROM projects    WHERE active;  (3.1ms)  SET LOCAL enable_nestloop = on; (3.0ms)  COMMIT 
 
 
 
 

相关问题

0  ImageMagick,Paperclip,Macos Sierra  ( Imagemagick paperclip macos sierra ) 
我完全绝望。我一直在尝试安装imagemagick两天,我仍然有纸夹宝石i rails的问题。 我正在使用MacOS Sierra,我通过Macports安装了ImageMagick sudo port install ImageMagick 我检查了安装目录: which identify 并...

2  json请求的强大参数  ( Strong parameters with json request ) 
我认为如果请求被识别为JSON,则Rails会自动识别/解析JSON Param。但下面的请求: Processing by Api::V1::LinksController#create as JSON Parameters: {"link"=>"{"title":"My first title"}"} ...

0  轨道避免阻止慢速控制器的工人  ( Rails avoid blocking worker in slow controller ) 
通常,任何DB /文件IO即使是外部HTTP请求也很快,但我发现较慢的人可以忍受所有的工人(以及内存限制我可以运行的Ruby实例),并每人创建大量线程还有其他问题(CPU或内存重型动作堵塞系统)。 我是否可以以异步方式(更像nodejs)或更像nodejs)或以某种方式引入该操作的线程来处理这些操作? 因为我想回复原...

1  错误消息:无法在任何源中找到jsonapi-parser-0.1.1.beta2  ( Error message could not find jsonapi parser 0 1 1 beta2 in any of the sources ) 
在AWS服务器中尝试部署Rails 5应用程序时出现错误。 错误消息:无法在任何源中找到jsonapi-parser-0.1.1.beta2 我的本​​地机器是ubuntu,它完美地工作。 官方Gemfile页面显示"此版本已播种,并且它无法直接下载或用于可能已依赖于其的其他GEM。' https://rub...

0  Agges_with(params [:技能])ArgumentError:争论错误数量(给定2,预计1)  ( Agged withparamsskill argumenterror wrong number of arguments given 2 ex ) 
我在轨道5 beta 3中发出的宝石作用 - AS-Taggable-On。 project.rb : class Project < ActiveRecord::Base acts_as_taggable acts_as_taggable_on :skills end ro...

0  在Rails 5.1中从外部IP点击Dev Web服务器?  ( Hit dev web server from outside ip in rails 5 1 ) 
我正在尝试在vagrant管理的VM中运行Rails 5.1,但我无法使用我的主机上运行的浏览器(MacOS Sierra)浏览网站。 我已经验证了Vagrant和VirtualBox中的端口转发正在工作,而且客户操作系统(Fedora Server)不会阻止具有防火墙的流量。我可以在同一VM上访问Rails 5.0...

0  在Rails中进行加入搜索  ( Doing a joined search in rails ) 
我正在努力在Rails项目中进行简单的加入搜索。我想做的是根据用户进入搜索框中的物品的描述。我最常获得的错误是: mysql2 ::错误:在'where子句'中的未知列'item.description':选择 item_instances 。*来自 item_instances 内连接 items 在 items...

0  使用黄瓜设计的控制器上未定义的局部变量或方法`last_request'  ( Undefined local variable or method last request on devise controllers with cuc ) 
我有一个基本的用户更新测试/端点: def update current_user.update_attributes!(user_params) respond_with current_user end 我正在使用黄瓜。以下是我的一些版本供参考: cucumber (2.4....

2  未初始化的持续葡萄::格式化器:: ActiveModelserializers错误  ( Uninitialized constant grapeformatteractivemodelserializers error ) 
我正在使用葡萄宝石暴露API。从AWS服务器运行应用程序后部署后,我得到以下错误: 来自应用程序的消息:未初始化的常量葡萄:: formatter :: ActiveModelserializers(NameError) 我的应用程序正在使用我的Ubuntu机器。 ...

9  如何在Newrelic中区分Rails API呼叫?  ( How to differentiate rails api calls in newrelic ) 
我正在使用Rails 5服务网站和RESTful API,我使用Newrelic( newrelic_rpm gem)来监控应用程序性能。 此刻,GEM监视器到所有请求到一个应用程序名称。 让我们说我的路线看起来像: Rails.application.routes.draw do resources ...

-1  rails祖先小组表视图  ( Rails ancestry group table view ) 
例如,我有这样的活动记录。低于 [{id: 1, ancestry: nil, name: "Person 1"}, {id: 2, ancestry: nil, name: "Person 2"}, {id: 3, ancestry: nil, name: "Person 3"}, {i...

2  Rails 5应用程序:表单和API身份验证教程?  ( Rails 5 application form and api authentication tutorial ) 
是否有任何良好的教程,可以使用表单和API身份验证从滚动中创建AUTH系统? 我发现了很多教程,但遗憾的是它们仅基于或仅基于API的身份验证来实现。 但我想建立一个表单和API。 因为对于SEO,服务器端渲染很重要,所以我也可以创建注册和登录表单。但是基于API的移动应用程序应用程序。 ...

4  Rails 5 API +实时通知  ( Rails 5 api real time notifications ) 
我只创建一个Rails 5 API,我需要创建一个实时Web通知。 通过使用Acturecable是可能的吗?有谁有一个动作电缆或任何其他解决方案的例子? 提前感谢。 ...

13  如何rescue actionDispatch :: paramsparser :: parseError并返回Rails 5中的自定义API错误?  ( How to rescue actiondispatchparamsparserparseerror and return custom api err ) 
无论何时发送畸形的json,对only oply rails 5.x应用程序,我得到一个例外,rails返回整个堆栈跟踪作为JSON。显然我想用一个很好的,自定义,格式化的错误回复。 => Booting Puma => Rails 5.0.0.1 application starting in developm...

6  ActionController ::参数弃用警告:不推荐使用方法大小,将在Rails 5.1中删除  ( Actioncontrollerparameters deprecation warning method size is deprecated and ) 
我最近遇到了这个弃用警告 弃用警告:弃用方法大小,将在Rails 5.1中删除,如 ActionController::Parameters 不再继承哈希。使用此弃用行为暴露了潜在的安全问题。如果您继续使用此方法,您可能会在您的应用程序中创建安全漏洞,这些安全漏洞可以利用。 params看起来像这样: <A...

1  Rails动作电缆未发送广播  ( Rails action cable not transmitting a broadcast ) 
我在我的应用程序中有一个部分,其中刚重新加载的网页没有响应动作电缆广播,但在执行一些任务之后,它确实响应相同的广播。 1,2,32 我不知道为什么ControlChannel没有传输广播。我应该看什么? ...

1  如何在Rails Admin Dashboard操作中添加Helper 5  ( How to add helper in rails admin dashboard actions in rails 5 ) 
i`m使用rails admin gem https://github.com/sferik/rails_admin 和我我升级到它的最新版本。 在旧版本的rails admin(0.6.5)和rails(4.1.0)中加载辅助课程,所有工作都很好。升级到Rails 5和Rails Admin到Master B...

0  如何为型号设置Arament _save _save?  ( How to set a random number before save for a model ) 
我有一个produt模型,即如果用户留空,我需要生成一个随机数。如何实现这一点? SELECT IF(valuefor=alpha, SUM(quantity),0) as alpha , IF(valuefor=beta, SUM(quantity),0) as beta FROM mytabl...

0  使用Edit_Resource_Path搜索表单作为Rails 5中的操作  ( Search form with edit resource path as action in rails 5 ) 
我有资源发票,每张发票都有一个编辑路径: http:// localhost:3000 / Invoices / 1 /编辑 在我的索引页面上,我将所有的发票我想拥有一个输入字段和提交按钮,以跳转到某个发票的编辑页面: class SearchPage < SitePrism::Page element...

3  rails 5.1和继承中的skip_before_action回调  ( Skip before action callbacks in rails 5 1 and inheritance ) 
我刚刚将我的应用程序升级到Rails 5.1,我一直被Skip_before_action回调的新行为咬伤。即,如果在尝试跳过它时没有定义回调,则会引发错误。 我知道我可以通过rad:false,如 skip_before_action :authorise, raise: false 但想知道是否有更好的...

21  Rails 5如何清除或删除Postgres数据库  ( Rails 5 how to clear or delete production postgres database ) 
我正在尝试删除生产数据库,以便我可以开始新鲜。当我从Rails 4升级到Rails 5时,它现在可以保护生产数据库免受意外删除。当我运行 rake db:reset 时,它显示以下错误消息。 /app# rake db:reset ActiveRecord::SchemaMigration Load (1.8...

1  访问URL常规URL paramter而不是:ID  ( Access to url general url paramter instead of id ) 
处理到/比萨/ marinara的请求我可以使用 get '/pizzas/marinara', to: 'pizzas#marinara' 但是,如果有许多不同种类的比萨饼,则引入相应变量是有意义的。我知道 get '/pizzas/:id', to: 'pizzas#show' 使得Pizza...

0  Rails Seed Miagrate正在使用错误activemodel :: noknatattributeerror停止  ( Rails seed migrate is being stopped with an error activemodelunknownattributee ) 
我一直在尝试做 import React,{ useState } from 'react'; import isEmail from 'validator/lib/isEmail'; import isEmpty from 'validator/lib/isEmpty'; import equals from 'v...

0  Rails 5:未正确转换DateTime对象TimeZone  ( Rails 5 not converting datetime object timezone correctly ) 
这个问题已经在我身边吃了一段时间。 我占用日期时间字符串: [14] pry(#<EventsController>)> params[:event][:ended_at] => "05/31/2017 2:00 PM" 我将它转换为datetime对象: pry(#<EventsController>...

0  邮件轨道5的未定义方法`model_name'  ( Undefined method model name for mailer rails 5 ) 
我正在尝试在里亚尔5中与我的内置邮件功能联系我。 我将其与常规控制器和邮件作为模型的视图相同。但是当我完全写出时,我收到错误: 未定义的方法`model_name'#contactmailer 联系人是邮件程序的名称。 当我尝试使用Rails Server运行时查看New.html.erb页面时出现错误。它看起...

相关问题

0  ImageMagick,Paperclip,Macos Sierra 
2  json请求的强大参数 
0  轨道避免阻止慢速控制器的工人 
1  错误消息:无法在任何源中找到jsonapi-parser-0.1.1.beta2 
0  Agges_with(params [:技能])ArgumentError:争论错误数量(给定2,预计1) 
0  在Rails 5.1中从外部IP点击Dev Web服务器? 
0  在Rails中进行加入搜索 
0  使用黄瓜设计的控制器上未定义的局部变量或方法`last_request' 
2  未初始化的持续葡萄::格式化器:: ActiveModelserializers错误 
9  如何在Newrelic中区分Rails API呼叫? 
-1  rails祖先小组表视图 
2  Rails 5应用程序:表单和API身份验证教程? 
4  Rails 5 API +实时通知 
13  如何rescue actionDispatch :: paramsparser :: parseError并返回Rails 5中的自定义API错误? 
6  ActionController ::参数弃用警告:不推荐使用方法大小,将在Rails 5.1中删除 
1  Rails动作电缆未发送广播 
1  如何在Rails Admin Dashboard操作中添加Helper 5 
0  如何为型号设置Arament _save _save? 
0  使用Edit_Resource_Path搜索表单作为Rails 5中的操作 
3  rails 5.1和继承中的skip_before_action回调 
21  Rails 5如何清除或删除Postgres数据库 
1  访问URL常规URL paramter而不是:ID 
0  Rails Seed Miagrate正在使用错误activemodel :: noknatattributeerror停止 
0  Rails 5:未正确转换DateTime对象TimeZone 
0  邮件轨道5的未定义方法`model_name' 



© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有