我有一个MyISAM表(在Mariadb上),其中有700万行。
CREATE TABLE `mytable` (
`id` bigint(100) unsigned NOT NULL AUTO_INCREMENT,
`x` int(5) unsigned NOT NULL DEFAULT '0',
`y` int(5) unsigned NOT NULL DEFAULT '0',
`value` int(5) unsigned NOT NULL DEFAULT '0'
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=10152508 DEFAULT CHARSET=utf8 PAGE_CHECKSUM=1
当我这样做
SELECT * FROM mytable WHERE id = 167880;
大约需要0.272秒
当我这样做
UPDATE mytable SET value = 1 WHERE id = 167880;
随机花费0.200至2.5秒
我一直在想这是因为我的表有很多行,但是通过它的主键来更新一行应该不需要花费太多时间。
由于我在发布之前做了一些研究,所以这里是我已经做过的检查:
答案 0 :(得分:0)
我认为问题是您用于id列的数据类型。 使用INT而不是BIGINT可以大大减少磁盘空间。 请改为阅读本文。 http://ronaldbradford.com/blog/bigint-v-int-is-there-a-big-deal-2008-07-18/ 希望对您有帮助