データの保存に Pyhon/Flask と MySQL db を使用する小さな webapp が 1 つあります。約3000行の学生データベースがあります。そのページを読み込もうとすると、読み込みに非常に時間がかかり、場合によっては 1 分ほどかかることもあります。約 20 秒と非常に遅く、何が原因なのか気になります。これは、リクエストが行われる前のサーバーの状態であり、そのサイトを読み込もうとしたときに発生します。
私が言ったように、これはあまり多くの記録ではありません。私はVer 14.14 Distrib 5.5.32, for debian-linux-gnu (x86_64) using readline 6.2
mysqlバージョンでUbuntu 12.04を使用しています。他のクエリは正常に実行されます。たとえば、名前が文字で始まる学生の一覧表示には約 2 ~ 3 秒かかりますが、これは許容範囲です。それはテーブルの一部を示しているので、何かが正しく最適化されていないと推測しています。
My.cnf ファイルはここにあります。私はいくつかのことを試し、一番下にいくつかの行を追加しましたが、あまり成功しませんでした.
実際のクエリは sqlalchemy によって実行されます。これは、これをロードするために使用される特定のコードです。
score = db.session.query(Scores.id).order_by(Scores.date.desc()).correlate(Students).filter(Students.email == Scores.email).limit(1)
students = db.session.query(Students, score.as_scalar()).filter_by(archive=0).order_by(Students.exam_date)
return render_template("students.html", students=students.all())
これは生成されたSQLのようです:
SELECT student.id AS student_id, student.first_name AS student_first_name, student.middle_name AS student_middle_name, student.last_name AS student_last_name, student.email AS student_email, student.password AS student_password, student.address1 AS student_address1, student.address2 AS student_address2, student.city AS student_city, student.state AS student_state, student.zip AS student_zip, student.country AS student_country, student.phone AS student_phone, student.cell_phone AS student_cell_phone, student.active AS student_active, student.archive AS student_archive, student.imported AS student_imported, student.security_pin AS student_security_pin, (SELECT scores.id \nFROM scores \nWHERE student.email = scores.email ORDER BY scores.date DESC \n LIMIT 1) AS anon_1 \nFROM student \nWHERE student.archive = 0"
お時間をいただきありがとうございます。