簡體   English   中英

如何從MySQL很大的表中的特定列中隨機選擇一些值(例如1000)?

[英]How to randomly select some, say 1000, values from a specific columns in a very large table in MySQL?

我在MySQL數據庫中有一個非常大的表,該表的列名為exa_id ,此表的行數超過10,000,000。 我想通過Python中的pandas.read_sql語句隨機有效地選擇僅1000個數據。 如何編寫代碼?

SQL select ext_id from table_name order by rand() limit 1000性能非常糟糕,我想select ext_id from table_name order by rand() limit 1000一種方式。

exa_id一種解釋是, exa_id列的內容是字符串,例如'uudjsx-2220983-df','ujxnas-9800xdsd-d2',...,而不是自動遞增序列。

在大多數情況下都可以使用:

select ext_id
from table_name t
where rand() < 2000 / 10000000
order by rand()
limit 1000;

內部查詢選擇大約2000行。 有一些統計差異。 然后,外部查詢會隨機排序它們,並從中選擇1000個。

如果您不知道行數,則可以執行以下操作:

select t.ext_id
from table_name t cross join
     (select count(*) as cnt from t) tt
where rand() < 2000 / tt.cnt
order by rand()
limit 1000;

該查詢將為您提供幫助。

SELECT name  FROM random AS r1
JOIN (SELECT CEIL(RAND() * (SELECT MAX(id) FROM random)) AS id) AS r2 
WHERE r1.id >= r2.id
ORDER BY r1.id ASC
LIMIT 100

暫無
暫無

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

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