0

次のようなテーブルがある場合:

CREATE TABLE IF NOT EXISTS `codetransactions` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_customer` int(11) DEFAULT NULL,
`id_cashier` int(11) DEFAULT NULL,
`id_code` int(11) DEFAULT NULL,
`program_type` int(11) DEFAULT NULL,
`id_codeaccount` int(11) DEFAULT NULL,
`tmstmp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`value1` int(11) DEFAULT NULL,
`value2` int(11) DEFAULT NULL,
`comment` varchar(150) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

大規模なデータマイニングの問題に苦しんでいます-この varchar フィールドは操作を大幅に遅くします。

私の本当の質問は次のとおりです。このテーブルを 2 つのテーブルに分割し、「コメント」フィールドを別のテーブルに抽出する方がよいでしょうか? すべてのトランザクションにコメントがあるわけではなく、データマイニングではvarcharは無関係になりますか、それともこれは単なる幻想で、mysqlがそれを処理しますか?

4

2 に答える 2

0
  • 列を持つ別のテーブルを作成します(table2

    ) -- id- ベーステーブルからの外部キー、
    - コメント-varchar(150)


したがって、ユーザーのコメントを取得したい場合は、そのユーザーのIDとコメントがこのtable2に移動するたびに、table2で既存のキーを検索するだけで済みます。
したがって、空の行を挿入する必要はありません..

于 2013-01-06T13:37:59.320 に答える
0

提案されているように、コメントを保持する別のテーブルへのインデックスを作成します。また、int フィールドに追加する (11) は、実際には可視性を設定する以外に何もしないことを認識していますか?

于 2013-01-06T13:12:39.303 に答える