为什么Heroku postgres需要比本地mysql更长的时间?

时间:2013-07-05 22:17:28

标签: mysql ruby-on-rails postgresql heroku postgresql-performance

在我的本地开发中,我使用ActiveRecord进行的查询需要1695ms,包括渲染视图,但是在Heroku上我使用相同的查询获得请求超时,这意味着它需要超过30秒。有什么我不知道Heroku或Postgres可能导致这个吗?

以下是查询:

Event.where(id: Details.select("event_id").where('email like \'%gmail%\''))

详细信息表的电子邮件属性没有索引。

在本地,explain_threshold设置为nil,但我怀疑它无论如何都会出现1.6s查询的问题。

数据量不是非常不同,不像1000合1和1000000,这就是为什么我认为它应该花费大约相同的时间。

1 个答案:

答案 0 :(得分:2)

此处的数据量很大,因为:

in (select ... where email like '%gmail%')

无法使用索引。这是整个桌子上保证的seq扫描。你拥有的行越多,它就越慢。

尝试使用此技巧稍微更改一下查询:

http://postgres.cz/wiki/PostgreSQL_SQL_Tricks#LIKE_optimalization