- 论坛徽章:
- 0
|
表结构:- CREATE TABLE `t_product` (
- `Fcp_id` varchar(32) NOT NULL,
- `Fproduct_id` varchar(32) NOT NULL,
- PRIMARY KEY (`Fcp_id`,`Fproduct_id`)
- ) ENGINE=MyISAM DEFAULT CHARSET=latin1
复制代码 执行sql:- select sql_no_cache Fproduct_id from t_product force index(PRI) where Fcp_id='1111111' order by Fproduct_id limit 100,20;
复制代码 执行信息:- mysql> show status like 'H%';
- +----------------------------+-------+
- | Variable_name | Value |
- +----------------------------+-------+
- | Handler_commit | 0 |
- | Handler_delete | 0 |
- | Handler_discover | 0 |
- | Handler_prepare | 0 |
- | Handler_read_first | 0 |
- | Handler_read_key | 1 |
- | Handler_read_next | 119 |
- | Handler_read_prev | 0 |
复制代码 为啥Handler_read_next的值不为 19?为啥不用主键(索引),直接跳到100条,在读出20条?
在主键的基础上再添加索引(应该可以不用加,主键也是索引的一种,加是为了试验):alter table t_product add index(Fcp_id,Fproduct_id);
执行select sql_no_cache Fproduct_id from t_product force index(Fcp_id) where Fcp_id='1111111' order by Fproduct_id limit 100,20; 后,
再执行show status like 'H%'; 还是得到相同输出(Handler_read_next的值为 119)。 |
|