1

検索フォームを備えた PHP で書かれた Web サイトがあります。このサイトには、多くのセクションと mySql テーブルがあります。

クライアントは、結果がグループ化されていないために結果に不満を持っており、以下のようにサイト セクションに従ってグループ化することを望んでいました。

Results in "About" Page:
<the results>

Results in "Blog":
<the results>

... 等々。

そのための迅速な解決策を実装する必要があったため、いくつかのクエリを作成して個別に実行し、foreach を使用して結果を反復処理し、それらを出力しました。

うまくいきますが、とても遅く、将来的にパフォーマンスの問題が発生するのではないかと思うので、私は満足していません.

私自身は mysql の天才ではなく、バックエンド プログラマーのキャリアを始めたばかりなので、これをより専門的な方法で処理する方法を誰かに教えてもらいたいと思っていました。

結合を使用することを考えていましたが、このアプローチを使用して結果をグループ化する方法がわかりません。

どんな助けでも大歓迎です。

4

1 に答える 1

1

参加が何らかの形で役立つとは思えません。各セクションが異なるテーブルに対応していると言ったので、意味をなしながらそれらを結合する方法はありません. できる最善の方法は、これらのクエリを 1 つの文に記述し、必要なすべての情報を一度に取得することです。これphp <=> mysqlにより、1 回実行して 1 回戻るため、データ送信の時間を節約できます。これを行う方法については、こちらをご覧ください。私は本当にあなたが改善できるより良いものは何もないと思います:)

応答: 明らかに、実行する要求が多いほど、スクリプトの実行時間が長くなります。コマンドを使ってみたことがありますかping google.comcmdで?非常に少量のデータを送信しても、30 ミリ秒程度の速さで応答が得られないことがわかります。これは、リクエストに対して支払う価格です。さらに、送信されるデータの量も時間に追加されます。そのため、1 つずつ実行すると、多くの不要な呼び出しが行われます。さらに、いつでも自分で試すことができます。どちらの方法で書くのも難しくありません。そして、タスクに費やした時間を出力します。数回繰り返します。データの送信に費やす時間がほとんどない場合は、簡単な方法でそのままにしておくことができます。ただし、アプリケーションが大きくなると、失われたミリ秒ごとに加算されることに注意してください。これに 1,000 リクエストを掛けると、1 分以上の時間を失っていた可能性があります。とにかく、受け取ったデータの分析に多くの時間を費やす可能性が高いため、UNION の方法には絶対に行かないでください。また

そして、その機能について: 私自身、その機能を使用する必要が生じたことがないので、それを読むのは私かあなたのどちらかです。唯一の違いは、そのような関数が存在することを知っていたことです:) 奇妙なことに、これに関する情報はほとんどありません。C# には非常に優れたデータセットがあり、データを簡単に処理できます。私の意見では、PHP は遅れをとっています :/ そして、私は今、C# に完全に取り組んでいるので、PHP についての知識はますます少なくなる傾向があります。私があなただったら、私が提供したリンクから例をコピーして貼り付け、後で再利用可能なクラスを作成します。少しでもお役に立てば幸いです:)

于 2012-11-12T13:52:47.313 に答える