性能Mysql使用varchar加入或表

时间:2013-01-06 13:06:21

标签: mysql performance join varchar

如果我有这样的表:

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字段会大大减慢操作速度。

我现在的真正问题是:将此表拆分为两个表并将“注释”字段提取到另一个表是否更好?并不是每个事务都会有一个注释,并且在数据挖掘中varchar将是无关紧要的,或者这只是一种错觉,mysql会处理这个问题吗?

2 个答案:

答案 0 :(得分:0)

如建议的那样 - 为另一个表创建一个索引,您可以在其中保留注释。而且你知道你添加到int字段的(11)实际上没有做任何其他事情然后设置可见性吗?

答案 1 :(得分:0)

  • 制作另一张表格( table2 ),其中包含列 -

         - id - 基表中的外键,
         - 评论 - varchar(150)

所以当有任何用户评论时,该用户的id和评论将转到此表2 如果你想获得用户评论,那么你只需要搜索table2中的现有密钥 所以不需要插入空行..