mysql索引开发者必备

首先:先假设有一张表,表的数据有10W条数据,其中有一条数据是nickname='has',如果要拿这条数据的话需要写的sql是 SELECT * FROM award WHERE nickname = 'has'

一般情况下,在没有建立索引的时候,mysql需要扫描全表及扫描10W条数据找这条数据,如果我在nickname上建立索引,那么mysql只需要扫描一行数据及为我们找到这条nickname='has'的数据,是不是感觉性能提升了好多.

mysql的索引分为单列索引(主键索引,唯索引,普通索引)和组合索引.

单列索引:一个索引只包含一个列,一个表可以有多个单列索引.

组合索引:一个组合索引包含两个或两个以上的列,

本文使用的案例的表:

CREATE TABLE award (
   id int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',
   aty_id varchar(100) NOT NULL DEFAULT '' COMMENT '活动场景id',
   nickname varchar(12) NOT NULL DEFAULT '' COMMENT '用户昵称',
   is_awarded tinyint(1) NOT NULL DEFAULT 0 COMMENT '用户是否领奖',
   award_time int(11) NOT NULL DEFAULT 0 COMMENT '领奖时间',
   account varchar(12) NOT NULL DEFAULT '' COMMENT '帐号',
   password char(32) NOT NULL DEFAULT '' COMMENT '密码',
   message varchar(255) NOT NULL DEFAULT '' COMMENT '获奖信息',
   created_time int(11) NOT NULL DEFAULT 0 COMMENT '创建时间',
   updated_time int(11) NOT NULL DEFAULT 0 COMM

你可能感兴趣的:(面试题)