2011-05-11 49 views
2

私はphpとMySqlの組み合わせを使用しています。私のケースでは、アクティビティに対して2つのクエリ(1つの 'select'と 'insert')を使用しています.3つのクエリがあります。これは非常に頻繁に異なるユーザーによって行われます。SQL関数の個別のクエリ?

私はクエリを実行するためにmysql_query関数を別に使用しています。これはいいですか、それともすべてのクエリを実行するSQL関数を使う方が良いでしょうか。私はパフォーマンスに関してより良いことを知りたい。あなたがmysqli拡張子を使用している場合は

答えて

0

あなたはmulti_query利用することができます:

http://php.net/manual/en/mysqli.multi-query.php

しかしクエリのいずれかが、クエリの別の成功に依存している場合、彼らは分離する必要があることに注意してくださいエラーチェックのために。

+0

これは私の場合です。 2番目のクエリは、最初のクエリの結果に基づいてのみ実行されます。クエリを別々に実行するか、SQL関数を書く方がよいでしょう – jeeva

+0

その後、これらを別々に実行します。それに依存する呼び出しを行う前に、最初の関数が実際に実行されたことをエラーでチェックする必要があります。 –

+0

一方が他方に依存する場合は、プログラムレイヤーでフィードバックをチェックする必要があるため、**それらを別々に実行する必要があります。 ** edit **複数のクエリ関数には 'rollback on error'オプションがあるかもしれませんが。 – Rudie

1

私の意見では、単一の操作をうまく実行する関数を作成する方が良い方法です。これにより、機能のテストが容易になり、将来他の操作に利用できるようになります。あなたの場合、ルーチンを実行するためにstored procedureを作成します。

0

具体的な例を示すことができれば助かりますが、今はすべて非常に仮説的です。ただし、

操作を1つのクエリにまとめることができれば、最も高速なオプションです。例:

insert into tableA 
select x, y, z 
from tableB 
where Foo = Bar 

select文の結果に対して処理を行う必要がある場合は、処理を行うストアドプロシージャを作成できます。これにより、データをPHPサーバに戻すという往復が回避され、パフォーマンス上のメリットが得られます。しかし、ストアドプロシージャよりも処理を実行するには、PHPがより優れた/より高速な言語である可能性があります。たとえば、テキストを操作する必要がある場合は、PHPで行います。

関連する問題