2011-10-26 44 views

回答

0

更快的替代方案的更快的方法是不要在查詢中使用RAND()。在應用程序內部將您的結果進行混洗。

+0

例如,他有50萬行,其全部選中,然後在應用洗牌? :) –

+1

正確http://stackoverflow.com/questions/6592751/why-dont-use-mysql-order-by-rand – matino

+0

數據庫可以做到這一點比內存代碼可以做到這一點快得多。所以,這似乎不是查詢的更快選擇。 –

2

如果表格非常大,則在應用程序內部洗牌可能會非常緩慢。

這個怎麼樣的解決方案:

找出表的大小(多少行)。比編程方式找到0和number_of_rows之間的6個隨機數。

用於搜索行的第二個查詢:

select * from table where id = id1 or id = id2... 
+1

我認爲這是一個正確的想法,儘管您需要在事務中執行此操作,否則數據庫的大小可能會在count query和select之間增長 – frankc