PHPコードを実行しているときはいつでも、MySQLに17,257行(サイズ:6.6 MiB)あります。遅すぎるため、Webページを開くのに30分以上かかります。 。私はmysqli_fetch_arrayをfetch_assocに変更するためにどこかを読んだが、それでも私は変更を見ることができない。助言がありますか? 最初は複雑なコードを持っていましたので、私はそれを以下のものに変更しましたが、まだ変更を見ることはできません。私は、クエリを通じて達成するためにwan't何mysqlに17,257行しかありませんが、非常に遅いPHPコード
$md=$db->query("SELECT MDid,MD_FullName FROM MDList");
while($row=$md->fetch_assoc())
{
$mdid=$row['MDid'];
$mdname=$row['MD_FullName'];
$distinct_filenames=$db->query("SELECT DISTINCT(FileName) AS Files FROM InitialLog WHERE MDid='$mdid' AND FileName NOT LIKE '%Patient Names%'");
while($row2=$distinct_filenames->fetch_assoc())
{
$filename=$row2['Files'];
$finalquery=$db->query("SELECT LinesCount,CharCount,WordCount,PageCount FROM InitialLog WHERE FileName='$filename' AND (DateLastSaved>='$firstdate' AND DateLastSaved<='$presentdate') AND MONTH(DateLastSaved) = (SELECT MIN(MONTH(DateLastSaved)) FROM InitialLog WHERE FileName='$filename') ORDER BY DAY(DateLastSaved) DESC LIMIT 1");
while($row3=$finalquery->fetch_assoc())
{
$linecount=$linecount+$row3['LinesCount'];
$charcount=$charcount+$row3['CharCount'];
$wordcount=$wordcount+$row3['WordCount'];
$pagecount=$pagecount+$row3['PageCount'];
}
}
は次のとおりです。
テーブル:
MDList(すべてのMDのMDのidから構成)
InitialLog(構成されて各MDidのFileNamesとカウント数)
私の最初のクエリは、各MDidをテーブルMDlistから1つずつ選択します。
2番目のクエリは、最初のクエリから選ばれたその特定のMD用InitialLogsテーブルは異なるファイル名をとり
サードクエリは、特定のMDの各個別のファイル名の様々なカウントを返します(ファイル名は同じであってもよいです)。ファイルが存在する場合、その名前のファイルが1つ存在すれば正常に返されますので、01に存在する場合と同様に、最初の月と最後の1日に存在するファイル名の数を返します-01-2016,22-01-2016,23-02-2016となるため、最初の月の最終日である行(22-01-2016)にあるカウントが返されます。
最後に、各MDの返されたすべてのカウントを合計します。
データベースのテーブルのインデックスをチェック –
使用することを学ぶ、データベース内の結合 –
はちょうどあなたがデータベースに送信クエリの合計数をカウント照会します。多くの高速クエリ(実際に高速であることが前提)では、実行に多くの時間が必要です。 –