私は、次の表の構造を持っている:MySQLのクエリのパフォーマンス
EVENT_ID(INT) EVENT_NAME(VARCHAR) EVENT_DATE(DATETIME) EVENT_OWNER(INT)
を私は、テキストフィールドまたは非常に大きなVARCHAR
あるべきフィールドEVENT_COMMENTS
を追加する必要があります。
私はこのテーブルをクエリする場所が2つあります。そのうちの1つは、すべてのイベント(そのページではevent_commentsフィールドを表示する必要はありません)をリストしたページです。
また、特定のイベントのすべての詳細をロードする別のページでは、event_commentsフィールドを表示する必要があります。
event_idとそのイベントのevent_commentsで余分なテーブルを作成する必要がありますか?または、そのフィールドを現在のテーブルに追加するだけですか?
言い換えれば、私のテーブルにテキストフィールドがある場合、私は質問しますが、私はSELECT
それは私のテーブルへのクエリのパフォーマンスに影響を与えますか?
だから、私がそれを分解した場合:同じテーブル:イベントリストページ(テキストフィールドを選択しない)が遅くロードされ、イベントの詳細ページ(テキストフィールドを選択)がより高速に読み込まれます。 異なるテーブルにある:イベントリストページの読み込み速度が速く、イベントの詳細ページの読み込み速度が遅くなります。正しい? –
MySQLのレコードの内部表現についてはわかりませんが、なぜ列の数が必然的にテーブルスキャンを遅くするのかがすぐわかりません。各行に列データのオフセットとテーブルの次の行が含まれている場合は、オフセットへのseek()時間だけを話していますか、それとも何か他のことが起こっていますか? –
@Larry:何が速いのですか?ディスクやRAMから '100'または' 1000'ページを読み込みますか? – Quassnoi