0

mysql_query()(または...)内で10個のSQLクエリを実行できることは知っていますが、それぞれに1つのSQLクエリを使用してmysqli_10個を実行するのとどう違うmysql_query()のですか?

mysql_fetch_assoc()それらが異なり、最初のソリューションがより効率的だった場合、その中のクエリの1つで関数をどのように使用しますか?

最初のソリューションでページあたりの接続数を1ページあたり1に制限できる場合mysql_query()、トラフィックを処理するのに十分なmysql接続があると思いますが、そうでない場合は、どのSQLテクノロジ(またはその他)を使用できますか?これにより、PHPからデータベースに効率的に接続できるようになります(より多くのユーザーを処理できるようになります)?

ApacheとPHP5.4を使用しています

4

2 に答える 2

2

一度に送信できるクエリは1つだけです...ドキュメントを参照してください

mysql_query()は、指定されたlink_identifierに関連付けられているサーバー上の現在アクティブなデータベースに一意のクエリ(複数のクエリはサポートされていません)を送信します。

あなたはmysqli_mutli_query..ドキュメントからの例を使うことができます:

$query  = "SELECT CURRENT_USER();";
$query .= "SELECT Name FROM City ORDER BY ID LIMIT 20, 5";

/* execute multi query */
if ($mysqli->multi_query($query)) {
    do {
        /* store first result set */
        if ($result = $mysqli->store_result()) {
            while ($row = $result->fetch_row()) {
                printf("%s\n", $row[0]);
            }
            $result->free();
        }
        /* print divider */
        if ($mysqli->more_results()) {
            printf("-----------------\n");
        }
    } while ($mysqli->next_result());
}

/* close connection */
$mysqli->close();
于 2012-07-11T15:27:50.760 に答える
0

mysql_query()の1回の呼び出しで10個のクエリを実行することと、10個のmysql_query()を実行することの違いは、最初のケースでは、最後のクエリからのみ結果を取得できることです。ただし、新しいmysql_connect()を実行しない限り、クエリ間で再接続することはできません。

別の方法は、 mysqli_multi_queryを使用することです。これにより、複数のクエリを並行して実行できるようになり、一部が最適化されますが、全体ではありません。

その音からすると、データベースに接続するためのより効果的な方法は必要ありません。クエリを最適化したり、インデックスを並べ替えたりする必要があります。あるいは、データベースマシンが単に正しく構成されていないか、ハードウェアのサイズが小さすぎる可能性があります。あなたの実際の問題は、データベースの質問が遅すぎることだと思いますか?

mysql_query()を使用して実行するだけで、呼び出しごとに1つのクエリが実行され、mysqlはPHPとは別のマシンで実行され、汗をかくことなく1秒あたり数百のMySQLクエリを実行できます。

于 2012-07-11T15:36:50.297 に答える