
1 ksc010 2014 年 2 月 25 日 你可以随机生成几个 id 然后 select * from stock where id in(10000,1200,...) |
2 KiseXu 2014 年 2 月 25 日 先取得id的max值,然后从1到最大值(如果id是连续的话)间随机出几个id,然后直接到mysql里读这几个id的记录就行 |
3 cevincheung 2014 年 2 月 25 日 id表里随机出id。然后用id去where in id表是“随机”而不是随机。 随机从某个id开始limit 几条连续数据 |
4 Ever 2014 年 2 月 25 日 id同步进redis sets, 取srandmember |
5 czheo 2014 年 2 月 25 日 via iPhone 先取总数 SELECT COUNT(*) AS cnt FROM quotes 然后生成小于总数的随机数 SELECT quote FROM quotes LIMIT $generated_number, 1 |
6 flytwokites 2014 年 2 月 25 日 标准做法是在表里加一个int列,设置成随机值,然后按这个值排序(还要做好索引) 然后按业务需要按适当的间隔时间更新这个列。 |
7 pubby 2014 年 2 月 25 日 @flytwokites 更新太频繁会降低mysql的缓存的命中率 |
8 flytwokites 2014 年 2 月 25 日 @pubby 按业务需要啊,比如要每天更新的话放在半夜更新一次就行了。 |
9 vibbow 2014 年 2 月 25 日 MYSQL完全可以专门对ORDER BY RAND()做优化的,可是他没有,LZ知道该去哪里提意见了么? |
10 avalon 2014 年 2 月 25 日 |
11 zhy0216 2014 年 2 月 26 日 只取一个的话, 知道id的范围, 在外部随机生成一个id(rand_id), 然后id=rand_id |
12 miao OP 感谢各位, 每人送出了 10-5 =5 分 @ksc010 @KiseXu @cevincheung @Ever @czheo @flytwokites @pubby @flytwokites @vibbow @avalon @zhy0216 |
13 ccnccy 2014 年 3 月 9 日 via iPhone 之前研究过,想机文章,但是文章太多,几十万。 就像上面说的,随机几个数字出来,再输出吧,快几万倍 或者用缓存插件 |