laravel如何高性能地从mysql数据库中随机取出几条数据呢,如:从用户表中随机取出100个用户
1、使用原生sql从表中随机取100条数据
(1) ORDER BY RAND()和LIMIT一起使用,可以用于从多行结果中选取随机的一部分。
SELECT * FROM 表名 WHERE name="aa" ORDER BY RAND() LIMIT 100;
(2).那么在laravel中使用原生SQL也很简单,如下所示:
$info = DB::select('SELECT * FROM 表名 WHERE name="aa" ORDER BY RAND() LIMIT 100');
2、使用原始表达式从数据随机获取数据
laravel的原始表达式可以使用DB::raw('RAND()')从表中随机获取数据。
还可以使用orderByRaw('RAND()')从数据库随机获取数据和DB::raw('RAND()')效果一样
$info=User::where('score','<>','60')
->orderBy(DB::raw('RAND()'))
->limit(100)
->get();
3、使用laravel的inRandomOrder方法随机获取数据:
laravel中使inRandomOrder会对数据结果进行随机排序,达到我们随机从数据库获取数据的效果:
$info = DB::table('users')
->inRandomOrder()
->limit(100)
->get();