mysql 如何選擇隨機行

2021-09-08 10:13:29 字數 609 閱讀 9103

最簡單的方式是使用 mysql 的 order by rand() 子句。

select  col1  from  tbl  order  by  rand()  limit  10; 它能很好的執行在小表中。然而,對於大表,生成隨機列表行時將產生乙個嚴重的效能問題,mysql 需要對每一行進行隨機,然後對它們排序。 即使你只想從10w的結果集中取其中隨機10行,mysql也需要對這10w行進行排序並且只提取其中的10行。   為了解決這個問題,我在 where 子句中使用 rand 並且不使用order by 子句。首先,你需要計算表中的總行數和你想要的得到隨機行數。其次,在 where 子句中加入該碎片數字,並要求結果只能小於(或等於)從這個碎片數字。

例如,假設你有乙個20萬行的表,你只需要從表中隨機100行。這個碎片數是從100/總行數得到:100 / 20萬= 0.0005。

該查詢將如下所示:select  col1  from  tbl  where  rand() <= 0.0005;

為了得到準確的100行結果集,我們可以增加碎片數字和 limit限制:例如

select   col1   from   tbl   where  rand()<=0.0006  limit  100;

mysql 隨機行 mysql 如何選擇隨機行

最簡單的方式是使用 mysql 的 order by rand 子句。select col1 from tbl order by rand limit 10 它能很好的執行在小表中。然而,對於大表,生成隨機列表行時將產生乙個嚴重的效能問題,mysql 需要對每一行進行隨機,然後對它們排序。即使你只想...

mysql如何選擇隨機行 使用MySQL選擇隨機行

偶然的你 order by rand 如您所知,大多數人推薦的解決方案無法擴充套件到大型表。set r select floor rand select count from mytable set sql concat select from mytable limit 1 offset r pr...

mysql選擇行 在mysql中選擇特殊行

如上所示,檢索整個表是容易的。只需要從select語句中刪掉where子句。但是一般你不想看到整個表,特別地當表變得很大時。相反,你通常對回答乙個具體的問題更感興趣,在這種情況下在你想要的資訊上進行一些限制。讓我們看一些他們回答的有關你寵物的問題的選擇查詢。可以從表中只選擇特定的行。例如,如果你想要...