w/c テクニックを使用するかどうかを決めることはできません... ただし、配列の方がはるかに簡単で、コーディングが簡単/クリーンであるため、アレイの方法を使用したくなります...
簡単に説明してね..
私のメッセージング アプリには、2 つのテーブルがあります。
- 連絡先 - 名前と電話番号が含まれています (現在 5,000 件以上のレコード)
- メッセージ - メッセージと電話番号。メンバーの名前は含まれません。
可能であれば、対応する電話番号と名前を付けて、1000件のメッセージをリストする必要があります...
例えば。
- 「こんにちは」 - 565-1111 から (ジョン)
- "Bring Cheese" - from 565-2222 (ビーバー)
- 「へへへ」 - 565年から2332年まで
- 「アイアンマンかっこいい!」- 565-7748 から (アーニー)
等...
私は通常、電話番号を介して連絡先をメッセージに結合します...かなり標準的なものです...(しかし、実際には、私のクエリは単純な左結合よりも少し複雑です)
今、私はすべての連絡先をフェッチし、それをアプリ/システムがはるかに簡単で、より単純でクリーンなコードで使用できる配列に入れるというアイデアで遊んでいます...ここで:
- クエリ
SELECT * contacts
それらを配列に格納します。
contacts['555-7748'] = "John";
contacts['555-1111'] = "Joe";
contacts['555-2233'] = "Borat";
contacts['555-4234'] = "Arnie";
etc
このようにして、次のようにするだけで、ページ/スクリプトで何度も配列にアクセスして、連絡先の名前を簡単に検索できます。
$name = contacts[$phoneNumber];
私は実際にこれを実装しましたが、それは本当にクールです..頭痛の種に参加したり、連絡先テーブルを再クエリしたりする必要はもうありません..
今問題は..これは大丈夫ですか?実用的?または、ここでメモリ上限または何かにぶつかっている可能性がありますか?
それは基本的に、スクリプトが出力する各メッセージに対してJOINクエリを実行するか、すべての連絡先/レコードを配列(メモリ)に保存し、代わりにそれを参照して、クエリをより簡単にします..私の唯一の心配は、何千ものレコードを配列にクエリすることです.少し多すぎますか?それともこれは本当に問題ない/実用的ですか?特に、スクリプトが特定の連絡先を複数回取得する必要がある場合があるため...
さらに、その配列をセッション変数に格納することも考えていました! lolz..だから私のスクリプトはこのデータを簡単に共有できます..笑
良い情報をお待ちしております。ありがとうございました。
---- 2013 年 3 月 31 日 (日曜日) 時点の更新 ----
わかりました...私は今、まったく別のアプローチを考えています..
1)これはすべて、きちんとした/プレゼンテーションの目的で、各メッセージの「連絡先名」を表示する必要があるためです(電話番号ではなく、メッセージに連絡先の名前を表示する方が良いですか?)....
2) 各メッセージは、MESSAGES テーブルの電話番号に基づいて 2 つの連絡先名 (受信者と送信者) を表示する必要があるため.....
3) 代わりに、MESSAGES テーブルに 2 つのフィールドを追加することを考えています... "sender_name" と "receiver_name" ..掲示板/フォーラム ソフトウェアがこの手法を頻繁に使用するのを見てきました..
4)システムがメッセージを受信すると、メッセージに関連付けられた番号の既存の連絡先エントリをチェックします...存在する場合は、それぞれの名前を取得してストレージ/挿入に含めます
5) ..問題は、メッセージの受信中に連絡先情報が利用できないため、名前が保存されず、後で連絡先情報が作成された場合です...古いメッセージは連絡先名を意図したとおりに表示しません...
6) 3 通りの解決策... 1 つ目は、新しい連絡先が追加/変更されるたびに、私の php は一致する番号ですべてのメッセージを更新します... 2 つ目は、時々、月に 1 回、「同期ルーチン」を実行します。 「物事が同期していることを確認する..または、ユーザーが実際にメッセージを開くと、必須ルーチンが実行され、その特定のメッセージの連絡先名がまだ連絡先テーブル情報と同期しているかどうかが確認されます...そして次のように更新されます必要..
うーん...あなたに近づいたほうがいいですか?このように、単純で高速な単純な SELECT クエリを発行するだけで済みますが、名前を表示することはできます..
もう一度言いますが、QUICK 配列参照はとてもクールだと思います..笑
- 優柔不断