MySQLのテーブルにインデックスを作成する:私は以下のように値を格納するためのMySQLデータベースを作成する必要が
id bigint(18) auto_increment,
NameOfStudent char(40),
UnixTime_YearOfExam bigint(18),
percentageScored decimal(5,2),
marksSubJect1 decimal(5,2),
marksSubJect2 decimal(5,2),
marksSubJect3 decimal(5,2),
クエリは次のようになります。
Select *
from table
where NameOfStudent='xyz'
order by UnixTime_YearOfExam desc, percentageScored desc limit 3
は異なるのレコードを持つ約2000の学生が
あります。各学生の年。したがって、各生徒は約5-10のレコードを持っています。 私の質問は:上記のクエリが高速であるように、このテーブルにインデックスがどうあるべきか。 where節とソートも同様です
生徒ごとに個別のクエリを実行することなく、各生徒の最後の3つのレコードをYearOfExam desc limit 3で選択するにはどうすればよいですか?
student_1, yearOfExam2015, percentageScored student_1, yearOfExam2014, percentageScored student_1, yearOfExam2013, percentageScored student_2, yearOfExam2015, percentageScored student_2, yearOfExam2014, percentageScored student_2, yearOfExam2013, percentageScored and so on
データを少なくとも2つのテーブルに分割することができます.1つは生徒用で、もう1つは生徒のFKとしてのみです。 2kのエントリでのパフォーマンスは心配しないでください。この時点では重要ではありません。 –
総学生は約2kです。記録は1生徒あたり5〜10人です。合計で約100k-200k –
あなたが数学を行うならば、 '2k * 10'は最大20kです... –