mysql myisam 主键关联_MySQL innodb和myisam 使用主键排序的疑问

rental表的存储引擎是innodb, rental_myisam表的存储引擎是myisam。两张表除存储引擎不同外,表结构都一样。

CREATE TABLE `rental` (

`rental_id` int(11) NOT NULL AUTO_INCREMENT,

`rental_date` datetime NOT NULL,

`inventory_id` mediumint(8) unsigned NOT NULL,

`customer_id` smallint(5) unsigned NOT NULL,

`return_date` datetime DEFAULT NULL,

`staff_id` tinyint(3) unsigned NOT NULL,

`last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

PRIMARY KEY (`rental_id`),

KEY `rental_date` (`rental_date`,`inventory_id`,`customer_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `rental_myisam` (

`rental_id` int(11) NOT NULL AUTO_INCREMENT,

`rental_date` datetime NOT NULL,

`inventory_id` mediumint(8) unsigned NOT NULL,

`customer_id` smallint(5) unsigned NOT NULL,

`return_date` datetime DEFAULT NULL,

`staff_id` tinyint(3) unsigned NOT NULL,

`last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

PRIMARY KEY (`rental_id`),

KEY `rental_date` (`rental_date`,`inventory_id`,`customer_id`)

) ENGINE=MyISAM AUTO_INCREMENT=16050 DEFAULT CHARSET=utf8;

使用explain分析,发现 rental表 使用了主键索引排序,而 rental_myisam表 却并没有用到主键索引排序,反而extra里用到"文件排序",不太懂为啥会是这样的区别?

explain select * from rental where return_date > '2005-08-30' order by rental_idG

0447d867e1e4f389cb0ad6a63c0be381.png

explain select * from rental_myisam where return_date > '2005-08-30' order by rental_idG

e19698e51e209c9865321efc3b544207.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值