質問: array( array( 'ID' => 165, 'SITE_NAME' => サイト名, 'URL' => 'http://~', ), array( 'ID' => 87, 'SITE_NAME' => サイト名, 'URL' => 'http://~', ), ・ ・ ・ ); ``` 結果的には上記の様な配列として格納できるテーブル出力できるSQLコマンドがわかりません。 また、現在構想している自作ページのシステムの根本的な仕様上、 このAjaxによるリクエスト操作が短時間に高頻度で行われるため、その都度 1Ajaxリクエスト 2PHPでDBコマンド 3DBデータを配列格納 4Ajaxで配列受け取り 5JSで配列分解・DOM操作 という一例流れが、主にサーバーサイド側(サーバー負担やメンテナンス面)の不安要素やデメリットが無いか? 選択オブジェクトのIDもとに参照するのが結果的に『外部サイトテーブル』のレコードならば 現時点では『外部サイトテーブル』のデータレコードが4桁5桁と頻繁には増えない予定ですので その程度のボリュームのデータならば事前に1度だけページアクセス時に参照オブジェクトのひとつとして読み込んでしまい、細かい参照処理はJSだけで行ってしまった方が良いのか? 質問の要点としては 1.上記内容を一回でリクエストできるSQL構文 2.本件の概要のシステム設計としては前者と後者(または別設計)ではどちらが向いているか? どちらかでも構いませんので、ご教授宜しくお願い致します。
回答: ### 1.上記内容を一回でリクエストできるSQL構文 ``` SELECT o.* FROM master AS m LEFT OUTER JOIN outer_site AS o ON o.URL_id IN (m.URL_01, m.URL_02, m.URL_03, m.URL_04) WHERE m.ID = 33; ``` 実行結果 : ### 2.本件の概要のシステム設計としては前者と後者(または別設計)ではどちらが向いているか? 私の所感としては、 `【外部サイトテーブル】`の更新頻度が低い(多少、古いデータを見せてしまってもかまわない)のであれば、 「一度 Ajaxリクエストしたデータだけをオブジェクトとして保持しておき、次回以降はそれを参照する」 くらいがちょうどよいのではないかと思います。 ただし、 > > 短時間に高頻度 > > > のリクエストというものが具体的にどの程度なのか、 さらにはサーバやクライアントのスペック、ネットワークの環境なども不明なので、 確かなことは言えません。 『前者』の設計でも心配するほどの負荷にならない可能性もありえますし、 むしろ下手にチューニングすることで * 想定外の場所がボトルネックになったり、 * バグを生じやすくなったり、 * アプリケーションを変更しにくくなったり する可能性も考えられるからです。 早めに実装して性能試験を行なってみるしかないのではないでしょうか。