有包含這樣的表:MySQL的:快速選擇n的表隨機行,其中一對列(不是列)都是獨一無二的
ID,爲person_id,pet_id介紹
有是關於該表的一些聲明:
- ID是主鍵,自動增量
- 每對(爲person_id,pet_id)是獨特
- ID,爲person_id,pet_id是整數,NOT NULL
- 「洞」是可能的(最大pet_id並沒有告訴我們總共有(最多)等爲person_id列數)
- 這是非常有可能的表格中的person_id更加不同,即每個人的pet_id的平均數量。
問題是:如何快速選擇當前person_id的隨機N pet_id?表
例子:
1. 1 1 cat
2. 1 2 dog
3. 2 40 horse
4. 2 35 dog
5. 3 46 duck
6. 2 39 duck
7. 1 3 duck
..................
100000 403 12 monkey
例子:我要選擇的那個人二號兩個隨機行。可能的隨機選擇之一是#3行。和第6行。 選擇應該是真正的「隨機」(應該以相同的概率出現)。
如何使用MySQL查詢選擇做呢?
P.S.當然,我已經閱讀了關於從表中選擇幾個隨機行的問題,這是一些棘手的解決方案的基本問題。但是,在我的情況下,有兩排,而不是一排。
我想更快的方法比
select id from tablename where person_id = 2 order by random() limit 2;
謝謝。想法很好的想法,嘗試甚至嘗試擴展。我讀過兩遍。 我對不對? - 這張表被修改的越少(比如說,每週一次,管理員而不是用戶,他們只是使用它),更有意義的是添加列random_column1,...,random_column20並製作20個索引(person_id,random_column1 ),...,(爲person_id,random_column20)?因此,對於人類來說,行爲看起來會「非常隨機」,如果每秒鐘不會更改用戶表,那麼性能應該沒問題。我對嗎? – Haradzieniec
是的,這聽起來不錯。如果這足夠隨機的話,就去做吧。 –
非常感謝!你讓我很快樂。 – Haradzieniec