2

MySQL(PHPを使用)でより効率的/より良い実践/より安価なのはどれですか? SELECT2 つの別々のステートメントをUNIONing して、それらを 1 つに ing するかCREATE、MySQL に相当するSELECT INTO? それとも他に考えられることはありますか?

結果は PHP スクリプトで使用されます。

クエリ:

  • 最初のものSELECT(これをクエリ A と呼びましょう) は、何があっても常に 10 行、4 列になります。
  • 2 番目SELECT(クエリ B) は、何があっても常に 1 行、4 列になります。

シナリオ:

  • 2 つのステートメントがある場合SELECT、次の場合にのみクエリ B を繰り返しますQuery A[0]->Col1 > 0: 合計 2 つの db クエリ + PHP 処理。
  • クエリ B が最初の行 (クエリ B) になり、クエリ A が行 2 ~ 11 (クエリ A) にUNIONなるような方法でクエリ C に 2 つのステートメントを入力した場合、次の場合に行 2 ~ 11 のみを反復します。合計 1 db クエリ + PHP 処理。Query C[0]Query C[1..10]Query C[0]->Col1 > 0

交渉不可:

  • 何があっても、クエリ A を反復処理する必要があります。
  • クエリ A の繰り返しは、クエリ B の値に依存します。

1 つ少ないSELECTクエリは操作の価値がありUNIONますか? これに対して、より効率的/より良いプラクティス/より安価なソリューションはありますか? 私がここに欠けているものはありますか?前もって感謝します。

4

1 に答える 1

3

それは、環境とあなたが管理している方法に完全に依存します-私は言わなければなりません-他のすべて. サーバーが地球の反対側にある別のネットワーク上にある場合、ネットワークがボトルネックになります。
より良い呼び出しを行うために、いくつかの仮定を立てます。サーバーは localhost にあり、接続は適切に管理されており、最適化する必要があるのはクエリ自体だけです。その場合は、Explainコマンドを使用できます。ここで説明する使用法は非常に簡単です。

Explain select col1 from table1 Union select col2 from table2

の使用方法を説明する記事がたくさんありますExplainこれが1つです。

最後に、重要なのは行数だけではありません。選択コードが実行される回数も重要です。実行ごとに 11 行を返し、1000 回反復するループがあるとします。各反復で行が異なると仮定すると、接続管理とキャッシュの効果がわかります。

于 2012-04-21T04:30:35.067 に答える