CREATE TABLE seckill (
`seckill_id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '商品库存id',
`name` VARCHAR(120) NOT NULL COMMENT '商品名称',
`number` INT NOT NULL COMMENT '库存数量',
`start_time` TIMESTAMP NOT NULL COMMENT '秒杀开启时间',
`end_time` TIMESTAMP NOT NULL COMMENT '秒杀结束时间',
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
--索引
PRIMARY KEY (seckill_id),
KEY idx_start_time(start_time),
KEY idx_end_time(end_time),
KEY idx_create_time(create_time)
) ENGINE = innoDB --只有innoDB引擎支持事务
AUTO_INCREMENT = 1000 --初始自增主键
DEFAULT CHARSET = utf8
COMMENT = '秒杀库存表';
定义主键的下面那三句是干嘛的啊,好像是索引,索引拿来干嘛的?
2 回答
已采纳
qq_连环_04358155
TA贡献34条经验 获得超5个赞
首先,那三个就是索引,idx_start_time是索引名称,括号里面的是对应的字段名。
接下来,索引是为了查找方便的,举个例子,比如你要查找seckill_id=10,虽然你只要符合这个一个条件,但是数据库默认查找是遍历每一行的所有字段的,即其他的name、number。。。。这些字段也会被判断一遍。
假如你将这个字段设置成了索引,那么在查找关于这个字段的条件时,就会只遍历这个字段的属性值,不会管其他字段,ok?
至于有人说无须扫描任何记录就可以直接得到。。。这是不可能的,还是需要查找的,只是不需要无用的查找
添加回答
举报
0/150
提交
取消