我得到了300 000行的表格。在此表中有專門的專用字段(稱爲order_number)來記錄該號碼,該號碼稍後用於顯示由order_number字段排序的此表中的數據。爲每個記錄分配隨機數/散列以便選擇按此數字排序的記錄,最好和簡單的方法是什麼?表格中的行數不穩定,可能會增長到1 000 000,因此rand方法應該將其記入帳戶。在表格中有隨機順序的元素的最佳方法
2
A
回答
1
Look at this tutorial從表中選擇隨機行。
+0
只要鏈接到教程並不是一個好的答案,即使教程的內容導致正確的方式解決問題。請添加本教程的精華的簡短摘要。 – weltraumpirat 2011-04-17 00:42:43
1
如果你不想使用MySQL的內置RAND()
功能,你可以使用這樣的事情:
select max(id) from table;
$random_number = ...
select * from table where id > $random_number;
這應該是快了很多。
1
0
我知道你有足夠的答案,但我會告訴你我們是如何在我們公司做到的。
我們使用的第一種方法是用於存儲爲每個記錄/行生成的隨機數的附加列。我們在此專欄上有INDEX,允許我們通過它訂購記錄。
id, name , ordering
1 , zlovic , 14
2 , silvas , 8
3 , jouzel , 59
SELECT * FROM table ORDER BY ordering ASC/DESC
POS:你有指數和排序是非常快的 缺點:你將依賴於新的紀錄保持的
第二條本辦法我們已經使用記錄的隨機化就是卡爾·魯斯發表了他的答案。我們檢索數據庫中的記錄數量,並使用>(更大)和一些數學來檢索隨機化的行。我們正在使用二進制ID,因此我們需要保留自動增量列以避免InnoDB中的隨機寫入,有時我們執行兩個或更多個查詢來檢索所有數據,並保持足夠的隨機性。 (如果您需要從1,000,000條記錄中選擇30條隨機項目,則可以針對具有不同偏移量的10個項目分別運行3個簡單的SELECT
)
希望這對您有所幫助。 :)
相關問題
- 1. 以隨機順序打印平衡BST的最佳方法?
- 2. 最有效的方式,以預設的隨機順序列表
- 3. 以自定義順序在Javascript中放入數組元素的最佳方法
- 4. 存儲表格視圖元素的最佳方法是什麼?
- 5. 生成元素隨機順序的算法
- 6. PHP:順序輸出的最佳方法?
- 7. 遍歷隨機順序的所有元素一次
- 8. 在表格內生成隨機元素
- 9. 以隨機順序從集合中獲取所有元素
- 10. 爲什麼HashSet中的元素是隨機順序的?
- 11. HashMap中元素的檢索順序是否真的隨機化?
- 12. 元組隨機切換順序列表
- 13. php的最大值以隨機順序顯示在列表中?
- 14. 縮放HTML元素的最佳方法
- 15. 檢查XML元素的最佳方法
- 16. 什麼是在JavaScript中獲得隨機數的最佳方法
- 17. 在SQL Server中隨機選擇行*每列的最佳方法
- 18. 在Sprite Kit中隨機移動精靈的最佳方法
- 19. Javascript:顯示列表中的一個元素的最佳方法
- 20. 隨機順序和maxOccurs中的元素> 1
- 21. 以隨機順序調用方法(C#)
- 22. 什麼是從列表中彈出隨機元素的最pythonic方法?
- 23. Yii格式的html5表單元素的最佳方式
- 24. Matlab,隨機改變單元格陣列中的順序
- 25. 更新通用列表中元素的最佳方法
- 26. 跳轉C#中隨機順序的表格之間的跳轉
- 27. 使表格單元格更寬的最佳方法
- 28. 按表現排序的隨機順序
- 29. 在OpenGL中繪製修剪的UI元素的最佳方法
- 30. 從隨機字符中移除「==」的最佳方法
所以你只需要一個隨機場?爲什麼不使用md5(rand(0,9999999))? – Ben 2011-04-17 00:08:36
它會比sha2(id)更多嗎? – Newbie1 2011-04-17 00:24:02
將不會sha2(id)給你相同的哈希,並且id會自動增加,所以不是真正的隨機 – Ben 2011-04-17 00:39:27