実行に時間がかかりすぎるスクリプトがあり、より高速になるように最適化するように取り組んでいます。私が知っていることの1つは、余分な時間がかかるということです。同じクエリを複数回実行する必要があるという事実です。そのクエリの結果を(データベースに書き込まずに)保存できるようにしたいと思います。これにより、後でクエリを再度実行しなくても、その値を参照できるようになります。
以下のスクリプトを劇的に簡略化していますが、これでアイデアが得られることを願っています。
それぞれが値を返す2つの関数があるとしましょう。
function a(){
$query = "SELECT SUM(price) FROM table_1 WHERE zip='$this->zip'";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
return $row['SUM(price)'];
}
function b(){
$query = "SELECT SUM(price) FROM table_2 WHERE zip='$this->zip'";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
return $row['SUM(price)'];
}
関数a()が値10を返し、関数b()が値5を返すとします。
さて、私のスクリプトが次のようなものだとします。
if (function a() > 5) { echo 'it is greater than 5!' }
if (function a() < 5) { echo 'it is less than 5!' }
if (function b() == 5) { echo 'it equals 5!' }
if (function b() > 10) { echo 'it is not greater than 5!' }
私が物事を正しく理解している場合、上記のスクリプトは私のデータベースの4つの別々のクエリを引き起こします。各クエリの最初の実行を保存することは可能ですか?私が考えた1つのことはこれを行うことでした:
$a = function a();
$b = function b();
そして、私のスクリプトを次のようにします。
if ($a > 5) { echo 'it is greater than 5!' }
if ($a < 5) { echo 'it is less than 5!' }
if ($b == 5) { echo 'it equals 5!' }
if ($b > 10) { echo 'it is not greater than 5!' }
これにより、$aと$bを定義した時点で、クエリが1回だけ実行されますか?私が考えていないことを考慮する別の方法はありますか?
ご協力いただきありがとうございます!