我有16K項
的表我想提取隨機44項
但我不想重複同樣的條目,曾多次(曾經)
所以我有一個每個用戶列表,它將已經使用的'ID'作爲逗號分隔的字符串保存在表中。
我使用列表選擇... NOT IN(used_IDs)
的問題是,這個名單過於龐大和SQL調用失敗,因爲大小的,我相信
MYSQL隨機選擇唯一行 - 不包括先前選擇的行
任何想法如何要做得更有用嗎?
Questions table:
+------+-------+-------+
| id | Qtext | Tags |
+------+-------+-------+
Test table:
+------+-------+
| id | QIDs |
+------+-------+
Results table:
+------+-------+-------+
| id | tID | uID |
+------+-------+-------+
我需要根據結果表從問題表中選擇唯一的隨機值。 (該測試ID與問題ID相關聯)
目前嘗試使用:
SELECT DISTINCT `questions`.`ID`
FROM `questions`, `tests`, `results`
WHERE
`questions`.`ID` NOT IN (`tests`.`qIDs`)
AND `results`.`uID` = 1 AND `tests`.`ID` = `results`.`tID`
AND 4 IN (`questions`.`tags`)
AND "http://www.usmlestep2qna.com" = `provider`
ORDER BY RAND() LIMIT 27;
任何想法?
16K的記錄是不是真的被大多數企業標準非常大的表。你可以分享查詢的表格結構和查詢計劃嗎?有可能在目前的做法本身.. – InSane
上述編輯... – user1672888
完成上述:) – user1672888