为了账号安全,请及时绑定邮箱和手机立即绑定

MySQL建表的问题,关于索引

MySQL建表的问题,关于索引

fenkapian 2016-12-20 21:48:08
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?

至于有人说无须扫描任何记录就可以直接得到。。。这是不可能的,还是需要查找的,只是不需要无用的查找

查看完整回答
1 反对 回复 2016-12-21
?
Caballarii

TA贡献1123条经验 获得超629个赞

把每条记录按这个索引排序存起来,下次查询根据这个索引就能更快找到,而不是翻遍整个表

查看完整回答
反对 回复 2016-12-21
  • 2 回答
  • 1 关注
  • 1965 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信