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

2021-10-18 19:15:12 字數 683 閱讀 6960

最簡單的方式是使用

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

mysql行 《Mysql 行模式》

一 總結 預設的行格式定義 innodb default row format 檢視當前資料表行格式 show table status table 建立表指定行格式 create table table row format dynamic 修改錶行格式 alter table table row...

mysql行格式 MySQL 行格式

以 mysql 預設的儲存引擎 innodb 為例 innodb 包含以下四種行格式 compact redundant dynamic compressed 指定行格式 create table 表名 列的資訊 row format 行格式名稱 alter table 表名 row format ...