mysql二级索引查询差异很大,innodb vs myisam

时间:2014-03-29 03:13:29

标签: mysql innodb myisam

1.table des

innodb_test

CREATE TABLE `innodb_test` (
  `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `city` varchar(255) DEFAULT NULL,
  `status` mediumint(9) DEFAULT NULL,
  `date` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `name_city_satus` (`name`,`city`,`status`)
) ENGINE=InnoDB AUTO_INCREMENT=1;
myisam_test** is just the same as innodb_test but with MyISAM engine.

2.我运行fllowing sql获得57行:

1):

SELECT SQL_NO_CACHE * FROM innodb_test WHERE `name` LIKE 'H%' AND city LIKE 'O%' LIMIT 0, 10000;

2):

 SELECT SQL_NO_CACHE * FROM myisam_test WHERE `name` LIKE 'H%' AND city LIKE 'O%' LIMIT 0, 10000;

通过show profilings,第一个sql需要0.029秒,而另一个需要0.0069。

为什么他们有这么大的差异?

1 个答案:

答案 0 :(得分:0)

尝试将固定行格式添加到您的表格中。

固定行格式比动态速度提高44%。

固定行格式的缺点是存储列所需的空间。更改为固定行格式将填充任何带有空格的可变长度列。但是,只要你的性能权衡以磁盘空间为代价,性能就会胜出。

ALTER TABLE  `innodb_test` ROW_FORMAT = FIXED

more info here