我有我的SQL查詢的問題場競猜爲PHP MySQL的:GET查詢SQL
- 問題1至10
- 我用sql隨機查詢,選擇問題
- 使用陣推新途徑保持先前的問題
- 使用SQL查詢[從陣推查詢],選擇新的問題(不超過前一個問題的出現)
的第一個問題開始
- 1:
SELECT * FROM questions WHERE catid="9" ORDER BY RAND() LIMIT 0 , 1
- 2:SQL查詢中獲取ID = 2這麼陣推=
(2)
第二個問題START(如果回答正確)
- 1:
SELECT * FROM questions WHERE catid="9" AND (id <> "2") ORDER BY RAND() LIMIT 0 , 1
- 2:SQL查詢獲得ID = 5,從而陣列推=
(2,5)
第三個問題START(如果答案正確)
- 1:
SELECT * FROM questions WHERE catid="9" AND (id <> "2" AND id <> "5") ORDER BY RAND() LIMIT 0 , 1
2:SQL查詢獲得ID = 1 so array push =
(2,5,1)
...問題開始(如果回答正確)
1:....
- 2:....
所以,我只是想知道,如果我有1000層的問題,所以我的SQL查詢要:
SELECT * FROM questions WHERE catid="9" AND (id <> "2" AND id <> "5" AND id <> "1" AND .... AND id <> "999") ORDER BY RAND() LIMIT 0 , 1
對於頁面進程,這應該是緩慢的?
如果速度慢,我們是否應該有另一種方式來處理這個查詢?謝謝......
我不認爲它正在放緩,許多...我想你有問題,不只是要求意見的頁面。我的錯。 – peaceman
首先,將這個:id <> 2和id <> 5和...改爲:id NOT IN(2,5,1 ...),並且可以將它們存儲爲一個數組並檢查它。 – sagi
在數據庫方面,1000實際上並不那麼重要。 100 000,仍然沒那麼多。用這種方法可能會讓查詢大小限制錯誤更大。然而,根據您的需求做類似這樣的事情可能是不可避免的(除非您願意爲每個用戶創建一個臨時表,以便跟蹤未經詢問的問題)。 – apokryfos