のフィールドに指定されているテーブルから行を選択私はfeed
テーブルを持っているフィールドは言う:のMySQL:名前は別のテーブル
id
- ユニークなフィードIDcreated
- フィードが作成された日付table
- テーブルの名前のフィード情報の残りの部分は私が言う2つのテーブルを持って次に
を常駐:feed_image
およびfeed_text
。これらの2つのテーブルには、フィード、さまざまなフィールドに関するさまざまな情報が含まれています。
feed.table
で指定されている適切なテーブルからフィードの情報を抽出するにはどうすればよいですか?ここで
は私のスキーマがどのように見えるかです:
+------------------+
| table_a |
+---------------------+ |------------------|
| feed | | id |
|---------------------| +------+ feed_id |
| id <-------------------+-+ | field_in_a |
| created | | | ... |
| table | | | |
| | | | |
| | | | |
| | | +------------------+
+---------------------+ |
|
|
| +-------------------+
| | table_b |
| |-------------------|
| | id |
+--------+ feed_id |
| field_in_b |
| ... |
| |
| |
| |
| |
+-------------------+
各フィードはtable_aまたはtable_bまたはtable_cかのいずれかで存在している...(私はそれらの30のように持っています)。 どのテーブルから情報を抽出するかを指定できます(各テーブルの構造は異なります)。
table_*.feed_id
にインデックスを追加してそれをfeed.id
にマップすると、InnoDBはいくつかの魔法を尽くしますか?私はそれらをすべてジョインすると、30個全てではなく、
私の最新のアイデアはフィールドfeed.content
を持つfeed
テーブルを1つだけ持つことです。異なるフィードタイプとその個々の内容を表す異なるPHPクラスのシリアル化されたPHPオブジェクトを格納します。
パフォーマンスに関して最も良い方法は何ですか?
P.S .:個々のパラメータでレコードを選択/検索/順序付けする必要はありません。ちょうどcreated
です。アイデアは1 000 000+のレコードでうまくいくはずです。
UPDATE:
30+ table_a/B/Cについて明確にする。..
各フィードには、あまりにも多くの異なる種類(新しいものも時間の経過とともに追加されます)のものとすることができる。
- 画像送りは、VARCHARは(255)
url
フィールド - テキストフィードを
- youtu LONGTEXT
text
フィールドを有することになるだろうbe.comフィードのVARCHAR(255)title
、VARCHAR(255)video_id
のフィールド - A * .comフィードは、*
x2
、* のいずれかになります。フィールド
これらのフィードの各次いで種類に応じてPHPで表示されるテキストは、純粋なように表示され
- の画像が表示されますテキスト
- A youtube.com
- *の.COMフィードが表示されます与えられたビデオIDから指定されたタイトルでビデオプレーヤーを表示していました飼料... :)
通常のクエリでは実行できませんが、クエリを動的に作成して実行するストアドプロシージャを実行できます。 –
それはうまくいくかもしれないと思いますが、私はパフォーマンスについてより心配しています。 –
データベースの構造を制御できますか? –