小编Ada*_*ish的帖子

如何强制子查询和#temp表一样执行?

我正在重复Mongus Pong提出的问题 为什么使用临时表比嵌套查询更快?没有一个适合我的答案.

我们大多数人在某些时候发现,当嵌套查询达到某种复杂性时,需要将其分解为临时表以保持其性能.这是荒谬的,这可能永远是最实用的方式向前意味着这些过程不能再被制作成图.通常第三方BI应用程序只能很好地与视图一起使用,因此这是至关重要的.

我确信必须有一个简单的查询计划设置,使引擎只是依次为每个子查询假脱机,从内到外工作.没有第二个猜测它如何使子查询更具选择性(它有时非常成功)并且没有相关子查询的可能性.只是程序员打算通过括号之间的自包含代码返回的数据堆栈.

我常常发现,简单地从子查询更改为#table需要花费120秒到5秒的时间.本质上,优化器在某个地方犯了一个重大错误.当然,可能有非常耗时的方式我可以诱使优化器以正确的顺序查看表,但即使这样也无法保证.我不是要求理想的2秒执行时间,只是temp tabling在视图灵活性范围内提供的速度.

我以前从未在这里发帖,但我已经写了多年的SQL,并且已经阅读了其他有经验的人的评论,他们也刚刚接受了这个问题,现在我只想让合适的天才前进并说出来特别提示是X ...

sql-server optimization performance query-optimization sql-server-2008

24
推荐指数
2
解决办法
8308
查看次数

测试POST ActionDispatch :: Http :: Parameters :: ParseError:765

它说我的参数中有一个意想不到的标记.

"ActionDispatch::Http::Parameters::ParseError: 765: unexpected token at 'conversation_identifier[participant_list][]=2&conversation_identifier[participant_list][]=1"

为清晰起见,带有幻数的测试版本:

let(:headers) do
  { 'HTTP_CURRENT_USER_ID' => 2,
    'Content-Type'         => 'application/json' }
end
let(:params) { { conversation_identifier: { participant_list: [1, 2] } }

it 'is getting testy' do
  post resource_url, params: params, headers: headers
  assert_equal 201, response.status
end
Run Code Online (Sandbox Code Playgroud)

现在这就是奇怪的.如果我没有标题,它可以解析那些参数.

ruby-on-rails-5.1

8
推荐指数
2
解决办法
2907
查看次数

我应该如何使用Rails索引和查询连接表?

我在Rails 4应用程序上有一个ruby,使用设计和用户模型以及交易模型.

我正在user_deals为User和Deal之间的has_many/has_many关系创建一个表.

这是迁移

class CreateUserDeals < ActiveRecord::Migration

  def change
    create_table :user_deals do |t|
        t.belongs_to :user
      t.belongs_to :deal
      t.integer         :nb_views

      t.timestamps
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

当用户加载一个Deal(例如Deal id = 4)时,我使用一个名为的方法 show

controllers/deal.rb
#for the view of the Deal page
def show
end
Run Code Online (Sandbox Code Playgroud)

在这个Deal id = 4页面的视图中,我需要current_user 在用户当前所在的Deal页面中显示Devise的视图.

deal/show.html

here is the nb of views of user: <% current_user.#{deal_id}.nb_views%>
Run Code Online (Sandbox Code Playgroud)

让我们说我有10M + user_deals线,我想知道我是否应该使用索引

add_index :user_deals, :user_id
add_index :user_deals, :deal_id
Run Code Online (Sandbox Code Playgroud)

或者可能

add_index(:deals, [:user_id, deal_id])
Run Code Online (Sandbox Code Playgroud)

确实在其他情况下我会说是,但在这里我不知道Rails如何在幕后工作.感觉好像Rails是知道的,而不需要我来加快这一进程,......该怎么办,就好像当Rails的负载这种观点是没有SQL查询(如"找到的意见处,NB user_id= xdeal_id= Y …

ruby activerecord ruby-on-rails devise ruby-on-rails-4

7
推荐指数
1
解决办法
1941
查看次数

NOT IN(子查询)生成零行

我一直在寻找使用该配方的流程的例子

WHERE a NOT IN (SELECT b FROM x)
Run Code Online (Sandbox Code Playgroud)

只是返回零行似乎是错误的.如果我将NOT IN更改为IN,则它不会返回inverse(所有行),实际上它会遗漏a中非null的所有行.这种情况已经开始发生在过夜的例程中,这些例程已经运行多年并且没有改变.感觉SQL Server中存在一个错误.

我可以通过重新制定来解决这个问题

LEFT JOIN x on a = b
WHERE b IS NULL
Run Code Online (Sandbox Code Playgroud)

但这不是我想拥有的东西.

这可能与统计数据有关吗?一个已知的bug?在最近的示例中,子查询中的表位于远程链接服务器上,但我不确定每次我看到它时都是如此.

sql sql-server sql-server-2008

5
推荐指数
1
解决办法
132
查看次数

为什么Docker卷空间不足?

Dockerized数据库将不再启动,因为...

FATAL:  could not write lock file "postmaster.pid": No space left on device
Run Code Online (Sandbox Code Playgroud)

我的硬盘上有数百Gb的可用空间,尽管我确实相信某些空间已用完。在尝试从备份还原45Gb数据库之后,首先出现了此问题。在此期间,我的Docker.qcow2文件膨胀到60Gb。Hypervisor对该VM文件的大小有限制吗?在Mac上使用Docker。

docker-compose.yml以下位置删除这些行似乎以某种方式导致了相同的错误,这似乎是一个线索:

volumes:
  - website_database_volume:/var/lib/postgresql/data
Run Code Online (Sandbox Code Playgroud)

(是的,我理智地检查了其他属性是否使我位于文件的右侧)

的输出 docker system df

TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              21                  16                  4.58 GB             -7.44e+09 B (-162%)
Containers          827                 3                   28.69 MB            28.69 MB (99%)
Local Volumes       5                   5                   57.02 GB            0 B (0%)
Run Code Online (Sandbox Code Playgroud)

docker docker-compose

4
推荐指数
2
解决办法
3458
查看次数