Chinaunix
标题:
谁有从40万条数据中随机取30条最佳方式?
[打印本页]
作者:
netxiao2005
时间:
2009-08-31 16:29
标题:
谁有从40万条数据中随机取30条最佳方式?
谁有从40万条数据中随机取30条最佳方式? 试过N种,始终找不到满意的方式.
作者:
cenalulu
时间:
2009-08-31 16:46
你的表结构和索引分布情况是怎样的?
作者:
netxiao2005
时间:
2009-08-31 17:06
都在一个表里,索引没问题的.
作者:
cenalulu
时间:
2009-08-31 17:22
原帖由
netxiao2005
于 2009-8-31 17:06 发表
都在一个表里,索引没问题的.
晕。。。
根据你的描述来看,估计你试过了 order by rand() limit 10这种方式。
为什么我要问你表结构和索引情况:
假设你有个自增id列,并且有索引,那么可以现生成10个随机的id,然后select in 这样可以避免全表读取。
假设你没有自增的id,而是一个没有规律的int主键,那么你可以先 select pri_key from xxx order by rand() limit 10,然后再和原表去结合。
等等。。。各种情况
所以先明确你的需求,不要让别人去猜你的需求和现状。
作者:
netxiao2005
时间:
2009-08-31 17:46
标题:
你说的方法我早都试过了啊:) 国内国外的资料都翻遍了.
算了,算是我的牢骚贴了,对Mysql严重不爽的一个发泄吧. 谢谢你的回复喔~~~
作者:
Coolriver
时间:
2009-08-31 21:34
看来楼主也是做过功课的,即然这样的方法不行。有没有想过别的方法呢?
例如:如果有唯一索引只取这个索引的40W的数据在程序层取出随机10个。
业务特殊了,可以走专用的一个DB(Slave)不影响现网业务的情况下,在那个Slave做一些特殊的操作。
方法很多的,关建看自已对那里熟悉了。所以怎么做,还是有LZ决定的。
作者:
netxiao2005
时间:
2009-09-01 10:41
标题:
谢谢喔~~~
我会试的,
作者:
deluxe1983
时间:
2009-09-01 15:16
平时都是直接在slave上order by rand(),还真没去好好想最佳方式这个问题...
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2