Mysql基本应用

1.默认类型转换

CREATE TABLE `indextest` (
`id` int(10)  AUTO_INCREMENT,
`name` varchar(10) DEFAULT NULL,
 PRIMARY KEY (`id`),

 KEY `idx_name` (`name`),

)

explain select age from indextest where name=‘111222’ \G,显示的是使用索引idx_name

而使用explain select age from indextest where name=111222 \G,显示的是全表扫描,未使用索引。

name字段定义为varchar,查询时需要加上引号,否则可能会引起索引失效,变为全表扫描。

反过来,explain select age from indextest where id =‘3‘ \G,mysql会很好的转换,不会引起索引失效。

 

2.覆盖索引

CREATE TABLE `user_group` (
`id` int(10)  AUTO_INCREMENT,
`uid` int(10) not null,

‘group_id‘ int(10) not null,
 PRIMARY KEY (`id`),

 KEY `uid` (`uid`),

 KEY `group_id` (`group_id`),

)

explain select sql_no_cache uid from user_group where group_id =234 \G,explain的结果是const,查询速度较慢

加上联合索引:alter table user_group add index group_id_uid(group_id,uid);查询效率会大幅度提升。

explain的extra结果是using index,表明查询使用的是覆盖索引。

覆盖索引是在Mysql在检索索引时就直接返回数据而不是通过索引检索数据。

需要注意的是复合索引index(a,b,c),a或(a,b)会使用索引,而b或(b,c)不会使用索引。

 

Mysql基本应用,布布扣,bubuko.com

Mysql基本应用

上一篇:Oracle异常的抛出处理


下一篇:让ADO.NET Entity Framework 支持ACCESS数据库