以下は、SQLでランダムな質問を選択するために私がすでに試した方法です。
newid()によるtestTableの順序から上位10個のIDを選択します
- 大きなデータには最適化されていません
testTableテーブルサンプルから上位10個のIDを選択(1パーセント)-しかし、テーブルサンプルでは、ページを選択する確率で機能するため、常にデータが返されるかどうかはわかりません。
行番号の変更を行うなど、他のいくつかの方法を試しましたが、さらに最適化されたソリューションが必要です
以前に選択されていないIDのみが必要です。sqlはクエリにキャッシュされないため、notinを使用したくありません。
まだ選択されていないIDを選択するためにクエリでnotを使用するよりも最適化されたアプローチを歓迎します。
テーブルのスキーマについて説明します。
次のテーブルがあるとします。
- 質問を保持しているテーブル、QuestionsTable
- テスト用のすべてのユーザーを保持するテーブルは、testUserTaleと言います
- テスト中の各ユーザーの質問を含むテーブル。
だから私は一度質問を試みた学生が次のテストで二度と見ないようにする必要があります