(GoRails)ActiveRecord --explain方法:(优化你的查询)

本文介绍了如何在Rails应用中使用Explain工具来理解和优化复杂的数据库查询,通过实例展示了添加索引前后查询效率的巨大差异。

https://gorails.com/episodes/activerecord-explain?autoplay=1

比如没有加index的查询和加了index的查询,调用数据库的速度就差5倍。

create_table "tweets" do |t|

  t.integer "user_id"

  t.text "body"

  ...时间戳

end

create_table "users" do |t|

...时间戳

end

 

在rails console上输入:

User.where(id: 1).joins(:tweets).explain

结果显示: 在users上用index查询(Index Scan)和在tweets上用Seq Scan查询的时间

而:

用add_index :tweets, :usre_id加上index后:则会使用:

Index Only Scan using index_tweets_id on tweets.速度加快5倍。

 

如果你继承了一个rails app 遗产,面对复杂的查询,可以使用explain来理解。

 

Postgresql文档https://www.postgresql.org/docs/current/static/using-explain.html

scan nodes是节点的底层,它们返回raw rows从一个表格。

不同类型的扫描节点scan nodes对应不同的表格存取方法:

sequential scans序列扫描

index scans 

bitmap scans 

还有各种查询子句的scan方式。

 

转载于:https://www.cnblogs.com/chentianwei/p/9390995.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值