1

配列にIDを含むレコードを削除する必要があります。

どちらを使うのが良いかわかりません。どちらがより速く、より効率的ですか?

コード1

$array = array('123','456','789' ...)//over 900 entries
$id = implode(',', $array);
$sql = 'DELETE FROM email WHERE id IN ('.$id.')';
//execute sql

また

code2

$array = array('123','456','789' ...)//over 900 entries
for($x=0;$x<count($array);$x++){
  $sql='DELETE FROM email WHERE id = '.$array[$x].' ';
  //execute sql
}

実行すると、2つのうちどちらがより速く、より効率的ですか?

4

2 に答える 2

5

ケース 1 の方が高速です。

合計時間を決定するのは、クエリの実行時間だけではありません。解析、準備計画にも時間がかかります。ケース 2 の場合は数回、ケース 1 の場合は 1 回だけです。行の削除も同様に高速ですが、ケース 1 を高速化するのはクエリのオーバーヘッドです。

于 2012-10-24T06:55:24.890 に答える
1

最初のものはより良いパフォーマンスをもたらします。2 番目のクエリでレコードに 1000 行がある場合、Web アプリは削除するたびに DB に 1000 回アクセスする必要があり、トランザクションごとにトランザクション ログを更新する必要があるためです。そうは言っても、オプション1は比較的優れています。

于 2012-10-24T07:05:02.117 に答える