2013-10-28 40 views
0

我需要从MySQL表中取一个匹配简单条件的随机行。该表有一个主自动递增的关键,所以这是我在做什么:优化随机mysql行取指性能

SELECT v FROM tbl WHERE pkey>$rand_num AND tiny_int_var=0 LIMIT 1 

的原因,我在做pkey>$rand_num代替pkey=$rand_num是因为我的自动递增有洞的时候。有什么办法来优化这个查询或获取一个随机行diff +更快?

+0

您定义了哪些索引?特别是,你有''(tiny_int_var,pkey)''定义的复合类型吗? – eggyal

+0

我很确定你会得到同一行返回任何时候$ rand_num是相同的。 – AbraCadaver

+0

@eggyal我实际上有(pkey,tiny_int_var)。在EXPLAIN中我已经注意到他只使用了pkey索引,尽管这个组合在possible_keys中。你认为这会有帮助吗?你如何确定它是(x,y)而不是(y,x)? – Noam

回答

0

未针对您的速度进行测试,但我认为您将获得随时返回的同一行$ rand_num是相同的。

SELECT v 
FROM tbl 
WHERE tiny_int_var=0 
ORDER BY RAND() 
LIMIT 1