2013-10-28 69 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