从 MariaDB 中的表返回随机行
发布于
这是从 MariaDB 中的表返回随机行的快速方法。
假设我们有一个包含以下数据的表:Pets
SELECT
PetId,
PetName
FROM Pets;
输出:
+-------+---------+
| PetId | PetName |
+-------+---------+
| 1 | Fluffy |
| 2 | Fetch |
| 3 | Scratch |
| 4 | Wag |
| 5 | Tweet |
| 6 | Fluffy |
| 7 | Bark |
| 8 | Meow |
+-------+---------+我们可以将该函数与子句和关键字结合使用,以从该表中返回随机行。RAND()ORDER BYLIMIT
例:
SELECT
PetId,
PetName
FROM Pets
ORDER BY RAND()
LIMIT 5;
示例结果:
+——-+———+ | PetId | PetName | +——-+———+ | 5 | Tweet | | 7 | Bark | | 1 | Fluffy | | 8 | Meow | | 3 | Scratch | +——-+———+
如果我再次运行它,我会得到这个:
+——-+———+ | PetId | PetName | +——-+———+ | 3 | Scratch | | 8 | Meow | | 4 | Wag | | 7 | Bark | | 6 | Fluffy | +——-+———+
等等…
请记住,这是相当密集的,不应在较大的表上使用。
使用此技术时,MariaDB 读取表中的所有行,为每个行生成一个随机值,对它们进行排序,最后应用子句。这将导致对大型表的查询非常慢。LIMIT
请参阅 MariaDB 网站上的数据采样:高效查找随机行的技术,了解更适合较大表的技术。