foreachループ内でSQLクエリを取得しました。時には多くの場合がありますが、いくつかの基準、潜在的に最大78のクエリに応じて、たくさんのクエリを実行することを意味します。このSQLクエリを最適化する
今や、早すぎる最適化はすべての悪の根本原因だと私は知っていますが、私は78のクエリを見たくありません。それは健康ではありません。ここで
はコードです:
$crumbs = explode(",", $user['data']['depts']);
foreach ($crumbs as &$value) {
$data = $db->query("SELECT id FROM tbl_depts WHERE id = '" . $value . "'");
$crumb = $data->fetch_assoc();
$dsn = $db->query("SELECT msg, datetime FROM tbl_motd WHERE deptid = '" . $value . "'");
$motd = $dsn->fetch_assoc();
if ($motd['msg'] != "") {
<?php echo $motd['msg']; ?>
}
}
は、私はそれが少しでもよくすることはできますか?
以下の最適化とは別に、パフォーマンスを向上させるためにストレート・セレクトの代わりにストアド・プロシージャにすることを検討することをお勧めします。 – nickytonline
このコードはSQLインジェクション攻撃に対して脆弱であることに注意してください。 –
こんにちはDaniel、なぜこの場合ですか?データは配列を取得するだけです。配列を入れる前にサニタイズされているはずです。$ user ['data']とその子もこのコードの前に消毒されます。 – bear