mysql索引和键

可以在创建表的时候增加索引,也可以在已有的表上增加索引。

在创建的表中,首先设置PRIMARY KEY,然后是所有UNIQUE 索引,然后是非唯一索引。这有助于 MySQL 优化器优先使用哪个索引,也可以更快地检测重复UNIQUE。

key = index

普通索引:没有限制

唯一索引:必须唯一,但是可以为空,有前缀的的时候列值要在前缀长度内唯一(多个值的时候,其中任何值都可以为空)

主键索引:必须唯一,且不能为空(主键等属于索引,等同于主键索引)

全文索引:它们只能从CHAR、 VARCHAR和 TEXT列中创建,且只支持整个列索引。

空间索引:空间数据类型

1.创建表的时候用key作为索引:

CREATE TABLE esdb_part.t_test (

  `id` int(10)  COMMENT 'id',

  `user_name` varchar(64) comment '用户名',

   `sex` int(10) comment '性别',

   `password` int(10) comment '密码',

   `brithday` int(10) comment '生日',

  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',

  PRIMARY KEY  idx1 (`user_name`,`sex`),

  UNIQUE KEY `idx2` (`user_name`,`sex`),

  KEY `idx3` (`brithday`)

) ENGINE=InnoDB AUTO_INCREMENT=4439 DEFAULT CHARSET=utf8 COMMENT='test表';

查看索引:

show index from esdb_part.t_test;

2.创建表时用index创建索引

CREATE TABLE esdb_part.t_test (

  `id` int(10)  COMMENT 'id',

  `user_name` varchar(64) comment '用户名',

   `sex` int(10) comment '性别',

   `password` int(10) comment '密码',

   `brithday` int(10) comment '生日',

  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',

  primary key (`id`),

  index idx1 (`id`),

  unique index idex2 (`user_name`,`sex`),

  index idx33 (`brithday`)

) ENGINE=InnoDB AUTO_INCREMENT=4439 DEFAULT CHARSET=utf8 COMMENT='test表';

查看索引:

3.在已有的表中增加索引

CREATE TABLE esdb_part.t_test (

  `id` int(10)  COMMENT 'id',

  `user_name` varchar(64) comment '用户名',

   `sex` int(10) comment '性别',

   `password` int(10) comment '密码',

   `brithday` int(10) comment '生日',

  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'

) ENGINE=InnoDB AUTO_INCREMENT=4439 DEFAULT CHARSET=utf8 COMMENT='test表';

create unique index idx1 on esdb_part.t_test(`id` );

create index idx2 on esdb_part.t_test(`user_name` );

查看索引

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值