嗨,这是我的表格结构
CREATE TABLE IF NOT EXISTS `sms_report` (
`R_id` int(11) NOT NULL auto_increment,
`R_uid` int(11) NOT NULL,
`R_smppid` varchar(100) collate utf8_unicode_ci NOT NULL,
`R_from` varchar(10) collate utf8_unicode_ci NOT NULL,
`R_status` longtext collate utf8_unicode_ci NOT NULL,
`R_message` text collate utf8_unicode_ci NOT NULL,
`R_numbers` longtext collate utf8_unicode_ci NOT NULL,
`R_timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
`R_timedate` varchar(40) collate utf8_unicode_ci NOT NULL,
`R_show` int(11) NOT NULL default '1',
`oldformat` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`R_id`)
) ENGINE=MyISAM 默认字符集=utf8 COLLATE=utf8_unicode_ci AUTO_INCRMENT=1947722 ;
我有大约 200 万行,所以当我在这里对 R_status 进行更新时,它似乎花费了太长的时间(R_status 是 1、2、16 或 24)。 请建议如何优化。
最佳答案
如果 R_status 始终为整数,则将其设为整数。 另外,我会尝试将此表转换为固定行宽格式(无 varchars/texts)
此外,在 R_smppid 上创建索引,否则它会在每次更新时进行全表扫描。
关于mysql - 大型 MySQL 表更新速度慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3634111/