Jig*_*ggs 2 ruby postgresql activerecord ruby-on-rails ruby-on-rails-4
哪一个最适合表现?
1)订单(数据库端计算)
2)sort_by(Ruby方面计算)
按照我的想法sort_by应该快order.因为order从数据库那边进行所以sort_by在得到结果之后变得慢,并且在红宝石一侧进行但是因为看这个结果所以混乱了.
=>正常查询(需要更多时间order和sort_by查询): -
> User.all
SELECT "users".* FROM "users"
#<Benchmark::Tms:0x000000089e4398 @cstime=0.0, @cutime=0.0, @label="", @real=6.515499990200624e-05, @stime=0.0, @total=0.0, @utime=0.0>
Run Code Online (Sandbox Code Playgroud)
=>使用order基准测试查询(比普通查询和sort_by查询花费更少的时间): -
> User.order(:name) # `order` query is perform in sql so should take more time
User Load (0.6ms) SELECT "users".* FROM "users" ORDER BY "users"."name" ASC
#<Benchmark::Tms:0x00000007ec48c8 @cstime=0.0, @cutime=0.0, @label="", @real=0.00014305600052466616, @stime=0.0, @total=0.0, @utime=0.0>
Run Code Online (Sandbox Code Playgroud)
=>使用sort_by基准进行order查询(在查询时采用更多查询,比普通查询更少的时间): -
> User.all.sort_by(&:name) # Not perform `order` from database side so should be faster then `order`
SELECT "users".* FROM "users"
#<Benchmark::Tms:0x0000000897e5c0 @cstime=0.0, @cutime=0.0, @label="", @real=0.0019228710007155314, @stime=0.0, @total=0.0, @utime=0.0>
Run Code Online (Sandbox Code Playgroud)
结论: -
正常查询实时: - 6.515499990200624e-05
order 查询实时: - 0.00014305600052466616
sort_by 查询实时: - 0.0019228710007155314
从这个结论可以说: -
正常查询然后应用order查询需要花费太多时间.
我们必须使用order方法来减少查询执行时间?
我总是喜欢sort_by按照我的想法.
哪一个是最好的 :(
数据库处理比Ruby更快.数据库处理可以很好地扩展,而Ruby的处理速度减慢与您正在处理的数据大小的增加成正比.
使用Ruby进行处理会大大增加时间和(特别是)内存消耗,并且它很容易使内存过载,并且实际上从未完成数据集"大"的处理.
使用Ruby的1_000_000行的一些计算将花费几十秒,而PostgreSQL将在几秒钟内完成它.
| 归档时间: |
|
| 查看次数: |
812 次 |
| 最近记录: |