MySQL 添加和删除索引
摘要:介绍添加、删除和显示索引的方法。
今天为大家演示MySQL数据库索引的常见操作,包括创建、删除和查询等。下面首先介绍为什么需要添加索引。
索引的作用
索引用于快速找出在某一列中有一特定值的行。如果不使用索引,MySQL必须从第一条记录开始读完整张表,直到找出相关的行;表越大,查询数据所花费的时间就越多。如果表中查询的列有一个索引,那么MySQL能够快速定位一个位置进而搜索数据文件,避免查检索有数据,从而节省很多时间。
普通索引
普通索引是最基本的索引,它没有任何限制。例如,MyISAM和InnoDB存储引擎只支持BTREE索引,在InnoDB引擎中,数据库创建的索引都是以B+树的形式存在。
这里介绍两种创建普通索引的方式:
① 以修改表结构的方式添加索引:
ALTER TABLE table_name ADD INDEX index_name ON (column(length))
② 创建表的同时创建索引:
CREATE TABLE `test1` (
`id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL COMMENT '姓名',
`course` varchar(20) DEFAULT NULL COMMENT '课程',
`score` int(4) DEFAULT NULL COMMENT '分数',
create_time datetime DEFAULT NULL COMMENT '创建时间',
index [indexName] (name)
) ENGINE=InnoDB CHARACTER SET = utf8mb4 COMMENT = '测试表';
此demo中,同时展示了如何创建表的主键。
创建唯一索引
唯一索引与普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须是唯一的,创建方法和普通索引类似:
ALTER TABLE table_name ADD UNIQUE uk_index_name ( `column` )
下面是创建其它所有的一些方法:
- 添加FULLTEXT(全文索引)
ALTER TABLE table_name ADD FULLTEXT ( `column`)
- 添加组合索引
ALTER TABLE table_name ADD INDEX index_name ( `column1`, `column2`, `column3` )
删除索引和主键
如果创建了某个索引,但是,发现不需要了,就可以使用如下两种方法进行删除:
DROP INDEX index_name ON table;
或者
ALTER table table_name DROP INDEX index_name;
删除主键的方法如下:
ALTER TABLE table_name DROP PRIMARY KEY;
显示索引信息
可以使用 SHOW INDEX 命令列出表中已经创建的索引信息。输出信息通过添加 \G 来格式化,提高可读性。实例如下:
SHOW INDEX FROM table_name\G
唯一索引和普通索引如何选择
唯一索引和普通索引在查询性能上基本没有差别,但在更新上普通索引会快于唯一索引。所以在可以选择普通索引的前提下尽可能选择普通索引。如果需要限制索引列的值必须唯一,则只能使用唯一索引。
结束语
对于Wiener以上的话题,大家又有什么自己的独特见解呢?欢迎在下方评论区留言!
MySQL 添加和删除索引的更多相关文章
- MySQL添加、删除索引
1.索引类型 UNIQUE(唯一索引):不可以出现相同的值,可以有NULL值: INDEX(普通索引):允许出现相同的索引内容: PROMARY KEY(主键索引):不允许出现相同的值: fullte ...
- mysql建立、删除索引及使用
同步发布:http://www.yuanrengu.com/index.php/2017-01-13.html 一.索引的作用 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少 ...
- Mysql添加和删除唯一索引、主键
1.PRIMARY KEY(主键索引) 添加 ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` );删除 ALTER TABLE `table_n ...
- MySQL添加和删除字段
查询表的字段类型: mysql> desc t_template_title; +----------------+--------------+------+-----+---------+- ...
- linux mysql添加、删除用户、用户权限及mysql最大字段数量
1. 登录: mysql -u username -p 显示全部的数据库: show databases; 使用某一个数据库: use databasename; 显示一个数据库的全部表: show ...
- Mysql添加更新删除数据-表
例如 此处拥有一个表名为 uuser 为表添加新数据 ,'); ,'); ,'); 假如只想添加uid和uname ,'小张'); 那么pas自动填充为NULL. 为表更新数据 这里把小王的pas改成 ...
- mysql 添加列的索引
无论哪种模式加入索引.会大幅度增加SELECT速度 索引名:Index_User_Name 栏目名:user_name 索引类型:Nornal 索引方式:BTREE
- 【面试】MySQL的事务和索引
MySQL事务 MySQL事务主要用于处理操作量大,复杂度高的数据. 比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这些数据库操作 ...
- mysql创建表与索引
-- ---------------------------- -- 商品属性表 -- AUTO_INCREMENT=1为设置了自增长的字段设置起点,1为起点 -- ENGINE选择:MyISAM类型 ...
- MySQL 添加索引,删除索引及其用法
一.索引的作用 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,所以查询语句的优化显然是重中之重. 在数据 ...
随机推荐
- 使用DeepSeek-R1分析电影票房
最近在学习DeepSeek-R1本地化部署的相关知识,看到了1个比较有意思的视频. 在该视频中,其主要逻辑就是当用户上传1个Excel后,之后就可以通过交互式的方式对这个Excel中的数据进行分析.但 ...
- Socket通信-Linux系统中C语言实现TCP/UDP图片和文件传输
TCP实现 传输控制协议(TCP,Transmission Control Protocol) 是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议.TCP是因特网中的传输层协议, ...
- 【文献阅读】 PVDF &阻尼&有限元建模
1. 压电Damper原理 Piezoelectric Composite Materials - ScienceDirect 当振动传递到压电材料时,振动能量通过压电效应转化为电能,产生交流电压.所 ...
- 同一局域网下,远程连接另一台电脑的Mysql数据库
博客地址:https://www.cnblogs.com/zylyehuo/ 参考链接 同一局域网,远程连接别人的Mysql数据库 用电脑A去远程电脑B的数据库,那我们要先在电脑B上设置一下: ste ...
- C# 从零开始使用Layui.Wpf库开发WPF客户端
一.简介 最近需要开发一个桌面版的工具软件,之前用得更多的是Winform,作为一个全干工程师,我们也要兼顾下WPF,趁此机会再研究下开源控件库. MaQaQ:Winform真好用(有个HZHCont ...
- Linux脚本-使用jar自动替换配置文件
背景 最近公司需要在生产服务器上测试字库,需要非常频繁修改配置文件中的字体相关属性,然后实时调试,所以需要频繁的修改配置文件并手动发布出去.之前需要修改配置文件时,我们需要: 把jar包通过FTP传回 ...
- drawcall和batch
drawcall和batch的概念和区别可以结合冯乐乐书的前端章节和以下i链接达到透彻的理解 正如链接中所讲,batch是比drawcall所指范围更广的概念,包含了drawcall https:// ...
- Semaphore.release()方法的底层原理
一.release() 方法代码解析 当调用 release() 方法时,实际调用的是 AQS 的 releaseShared(1) 方法.以下是其详细工作流程: public final boole ...
- 🎀Idea序列图插件-SequenceDiagram Core
简介 SequenceDiagram Core 是一个 IntelliJ IDEA 插件,它允许开发者直接在 IDE中创建和编辑序列图(Sequence Diagrams).序列图是 UML(统一建模 ...
- kette介绍-Step之Merge Join
Merge Join介绍 需要配合Sort rows使用,对关联字段进行排序 关联两个step数据,可以是两个不同的数据库表数据,也可以是一张表,一个文件,输出字段为两张表所有字段 注意将小数据集作为 ...