0
我試圖從表中隨機選擇一個具有category_id = 0(其中category_id = 0)約束的n個元素。之前,我使用概率流採樣來這樣做,因爲它不掃描每個元素。從一個約束表中取n個隨機元素
但是,有沒有辦法做到這一點與額外的地方約束?
拉出所有元素,然後選擇一個隨機n個元素是沒有意義的,因爲該表是數百萬行。
我之前的查詢沒有額外的約束被粘貼在下面。
SELECT *
FROM (SELECT @cnt := COUNT(*) + 1, @lim := %s
FROM table) vars
STRAIGHT_JOIN (SELECT *,
@lim := @lim-1
FROM table
WHERE (@cnt := @cnt - 1) AND RAND() < @lim/@cnt) drv_tbl
這是一個效率相當低溶液 – 2011-04-02 04:12:40