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