Mysql索引创建方式

mysql索引创建方式

  1. 在建表时创建
CREATE TABLE user(id int primary key,
	name varchar(55),
	gender tinyint(1),
	index idx_name(name) --此时可以指定多行作为组合索引
	);

使用 SHOW CREATE TABLE user; 命令可以查看建表语句

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `gender` char(2) DEFAULT NULL,
  `age` tinyint(4) DEFAULT NULL,
  `class_id` int(11) DEFAULT NULL,
  `birthday` date DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `class_id` (`class_id`),
  KEY `idx_name_class_gender` (`name`,`class_id`,`gender`),
  CONSTRAINT `user_ibfk_1` FOREIGN KEY (`class_id`) REFERENCES `class` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
  1. 在建表时没有创建,在需要时也可用create语句再次创建
格式为:CREATE INDEX [index name] ON table name(colum, ...)

在这里插入图片描述
. 创建组合索引 idx_name_class_gender,用SHOW INDEX FROM ‘user’ 命令可查看到user表中的索引如下:在这里插入图片描述
3. 用alert语句修改表结构,语句如下:

ALERT TABLE user ADD INDEX [索引名字] (name,...);
注意:可创建单行索引也可创建组合索引,要使用组合索引,记得遵守最左匹配原则。
  1. 删除索引
    既然创建了,那必须可以删除,方法如下
方法一: DROP INDEX index_name ON table_name 
方法二:ALERT TABLE table_name DROP INDEX  index_name ;

使用 EXPLAIN 语句可以查询到sql语句执行的情况

EXPLAIN SELECT id,name,gender,class_id FROM `user` WHERE name = 'zhangsan'

执行结果如下:
在这里插入图片描述
可以看到,在extra列中显示 using index,表示用到了索引;如果查询速度慢,用explain来做分析是个好办法。

小知识:CASE WHEN THEN 语句用法
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值