2016-04-16 10 views
-1

最近私は学生の結果を処理するためのアプリを開発しました。アルゴリズムは以下の通りです:php jqueryを使用して何千ものPHPループをスピードアップする方法

アルゴリズム:

get list of all students from mysql 

    if found 

    get list of subject from mysql 

     get sum of marks from mysql for each student and subject 

     calculate pass,fail,grade point etc. 
     insert total marks into another table 

    //end subject list 

    error msg if no student 

// end 

これは膨大な時間がかかります。

今、私はjQueryのスピードアップが好きです。

たとえば、

すべての学生IDとサブジェクトIDをjQuery配列に読み込みます。 jQueryループや他の方法で結果を処理するようにPHPにリクエストを送信します。

+1

あなたが思うところであなたのPHPコードを共有してください、時間がかかりますか? – naf4me

答えて

0

あなたの本当の問題は何かを言うのはかなり難しいですが、最初にするべきことはそれらのループを避けることです。おそらく、あなたはいくつかのストアドプロシージャを使ってこのロジックの一部をデータベースに移すことができますか?

データベースショットの負荷が大きいと、パフォーマンスが大幅に低下することがあります。

1

あなたが言っていることはあまり意味がありません。しかし、あなたのアルゴリズムの説明では、学生、科目、ループ内のマークを選択し、各学生の被験者のマークごとにDBを叩いているようです。代わりに、テーブル結合(left joininner joinなど)を使用します。

SELECT s.*, sb.*, SUM(m.value) 
FROM students AS s 
    LEFT JOIN subjects as sb ON s.id = sb.student_id 
    INNER JOIN marks AS m ON sb.id = m.subject_id 
GROUP BY s.id, sb.id 

このクエリでは、1000クエリをデータベース計算クエリで置き換えます。 MySqlはより最適化された方法でクエリを実行し、必要なリソースを少なくします。

関連する問題