簡體   English   中英

在大表上選擇一個或多個帶有WHERE條件的隨機SQL行

[英]Select one or multiple random SQL rows with a WHERE condition on a large table

我已閱讀http://explainextended.com/2009/03/01/selecting-random-rows/該書也被建議作為其他有關從大表中選擇隨機行的問題的解答

但是,我現在想知道如何將這種技術與僅選擇將另一個字段設置為某個值的行組合起來。

就我而言,我想建立一個馬爾可夫鏈。 我的表有一個id列,它是自動遞增的主索引。 它還有一個snippet列,該列存儲要添加的字符串的新部分,但prev_snippetprev_snippet列正確。

這意味着我想從表中選擇一個隨機行,該行還將prev_snippet設置為我已經擁有的某些字符串。 如何有效地做到這一點?

因此,是的,如果您不關心真正的隨機性,那么該鏈接文章中的想法可能很好。 只要在prev_snippet列上prev_snippet索引!

但是因為它仍然完全獨立於隨機使用,所以即使有一行,您最終也不會獲得任何結果。 也就是說,每次運行過濾器時,它總是碰巧總是排除在外。

坦白說,只需嘗試使用ORDER BY RAND() LIMIT 1 ,它可能會很好地工作。 它是最重要的結果集的大小,而不是初始表的大小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM