在处理一个项目的bug的时候,发现问题是因为同一条sql数据查询出来的结果不一样.
后面搜索了下,发现原因是:mysql的select * from test
查询结果跟表结构有关,有索引跟没索引结果会不一样.
测试示例:
表结构
CREATE TABLE `test` (
`id` smallint(6) NOT NULL AUTO_INCREMENT,
`type` tinyint(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8
插入数据
INSERT INTO `test` (`id`, `type`) VALUES (NULL, '4'), (NULL, '2'),(NULL, '6'), (NULL, '1');
执行查询命令
select * from test
结果显示:
增加索引
alter table test add index type_ind (`type`);
再次执行查询命令
select * from test;
结果显示:
__结论:__Mysql在执行 select \* from table
的时候,如果没有索引,根据主键索引顺序显示,如果有索引则根据索引列的顺序.
如果要根据主键索引,可以强制执行主键索引
select * from test force index (primary)
)