我看到了很多关于这个主题的主题,但我一直不知道该怎么做。
例如,如果我有这个表:
+------+-------+-------+
| id | name | class |
+------+-------+-------+
| 5 | test | one |
| 10 | test2 | one |
| 12 | test5 | one |
| 7 | test6 | two |
+------+-------+-------+
我只想显示类“one”中的X个随机行,我该怎么做?
注:这是一个很大的表,所以我不想使用ORDER BY RAND
。
3条答案
按热度按时间dkqlctbz1#
正如您已经知道的,大多数人推荐的
ORDER BY RAND()
解决方案不能扩展到大型表。我在我的书SQL Antipatterns Volume 1: Avoiding the Pitfalls of Database Programming中介绍了这个和其他解决方案。
如果你想用PHP做到这一点,你可以这样做(未测试):
c8ib6hqw2#
按
rand()
排序不是特别有效,但这是最小/最快的排序方式。cngwdvgl3#