相关疑难解决方法(0)

选择随机行PostgreSQL的最佳方法

我想在PostgreSQL中随机选择一行,我试过这个:

select * from table where random() < 0.01;
Run Code Online (Sandbox Code Playgroud)

但其他一些人推荐这个:

select * from table order by random() limit 1000;
Run Code Online (Sandbox Code Playgroud)

我有一个非常大的表,有5亿行,我希望它快.

哪种方法更好?有什么区别?选择随机行的最佳方法是什么?

sql random postgresql performance

311
推荐指数
9
解决办法
19万
查看次数

Rails 3:获取随机记录

所以,我发现了几个在Rails 2中查找随机记录的例子 - 首选方法似乎是:

Thing.find :first, :offset => rand(Thing.count)
Run Code Online (Sandbox Code Playgroud)

作为一个新手,我不知道如何使用Rails 3中的新查找语法来构造它.

那么,找到随机记录的"Rails 3 Way"是什么?

ruby random activerecord ruby-on-rails ruby-on-rails-3

131
推荐指数
6
解决办法
7万
查看次数

如何在Ruby中随机排序(加扰)数组?

我想让我的数组项目混乱.像这样的东西:

[1,2,3,4].scramble => [2,1,3,4]
[1,2,3,4].scramble => [3,1,2,4]
[1,2,3,4].scramble => [4,2,3,1]
Run Code Online (Sandbox Code Playgroud)

等等,随机

ruby arrays random shuffle

121
推荐指数
3
解决办法
6万
查看次数

Postgres中的快速随机行选择

我在postgres中有一个包含数百万行的表.我在网上查了一下,发现了以下内容

SELECT myid FROM mytable ORDER BY RANDOM() LIMIT 1;
Run Code Online (Sandbox Code Playgroud)

它工作,但它真的很慢......是否有另一种方式来进行查询,或者直接选择随机行而不读取所有表格?顺便说一下'myid'是一个整数,但它可以是一个空字段.

谢谢

postgresql random-access

84
推荐指数
6
解决办法
6万
查看次数

弃用警告:危险查询方法:ActiveRecord中的随机记录> = 5.2

到目前为止,从数据库获取随机记录的"常见"方法是:

# Postgress
Model.order("RANDOM()").first 

# MySQL
Model.order("RAND()").first
Run Code Online (Sandbox Code Playgroud)

但是,在Rails 5.2中执行此操作时,它会显示以下Deprecation警告:

DEPRECATION WARNING:使用非属性参数调用的危险查询方法(其参数用作原始SQL的方法):"RANDOM()".Rails 6.0中不允许使用非属性参数.不应使用用户提供的值调用此方法,例如请求参数或模型属性.可以通过将它们包装在Arel.sql()中来传递已知安全值.

我对Arel并不熟悉,所以我不确定解决这个问题的正确方法是什么.

ruby-on-rails rails-activerecord deprecation-warning ruby-on-rails-5.2

23
推荐指数
2
解决办法
3373
查看次数