简单MySQL索引优化基础~

本文介绍了MySQL中的四种索引类型及其特点,包括唯一索引、普通索引、主键索引和全文索引,并详细说明了索引的创建、删除、查看及更改的方法。此外还分享了一些索引优化的小技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址:简单MySQL索引优化基础~

索引是啥?有啥用?这个不聊了,直接来看MySQL中的索引类型:

  1. UNIQUE 唯一索引,同列不可出现相同值,但可有NULL值。

  2. INDEX 普通索引,允许出现相同索引内容。

  3. PRIMARY KEY 主键索引,同列不可出现相同值,也不可为NULL值,对于同一张表中只能存在一个主键索引。

  4. FULLTEXT INDEX 全文索引。

上述前三种索引类型都是针对列的值,第四种可针对列的值中的单个单词,如一篇文章中的某个词,然而并无卵用,因为只有MyISAM及英文支持,且效率就惨不忍睹了,不过可用coreseek或xunsearch等第三方应用完成全文查找。

来看下索引的CURD操作。

1、索引的创建

  1. ALTER TABLE适用于表创建完毕之后再添加。

  2. CREATE INDEX可对表增加普通索引或UNIQUE索引。

  3. 建表时添加索引。

ALERT TABLE语句格式如下:

ALTER TABLE 表名 ADD 索引类型 (unique,primary key,fulltext,index)[索引名](字段名)

案例如下:

## 索引名,可要可不要;如果不要,当前的索引名就是该字段名ALTER TABLE `table_name` ADD INDEX `index_name` (`column_list`) ALTER TABLE `table_name` ADD UNIQUE (`column_list`)ALTER TABLE `table_name` ADD PRIMARY KEY (`column_list`)ALTER TABLE `table_name` ADD FULLTEXT KEY (`column_list`)

CREATE INDEX语句格式如下:

CREATE INDEX 索引名称 ON 表名 (字段名称)

案例如下:

CREATE INDEX index_name ON table_name (column_list)CREATE UNIQUE INDEX index_name ON table_name (column_list)

建表时添加索引案例如下:

CREATE TABLE `test1` (  `id` smallint(5) UNSIGNED AUTO_INCREMENT NOT NULL,  `username` varchar(64) NOT NULL COMMENT '用户名',  PRIMARY KEY (`id`),  UNIQUE KEY `unique1` (`username`),  KEY `index1` (`nickname`),  FULLTEXT KEY `intro` (`intro`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='用户表';

2、索引的删除

## 以下两句都是等价的,都是删除掉table_name中的索引index_name;DROP INDEX `index_name` ON `talbe_name`ALTER TABLE `table_name` DROP INDEX `index_name`## 删除主键索引,只能用这种方式删除ALTER TABLE `table_name` DROP PRIMARY KEY 

3、索引的查看

show index from tableName

4、索引的更改

不会真有人以为这里会有东西吧。。。

直接删了重新创建索引就好了。

最后看下创建索引的小技巧:

  1. 维度高的列创建索引,数据列中不重复值出现的个数,这个数量越高,维度就越高,如数据表中存在8行数据a,b ,c,d,a,b,c,d这个表的维度为4,要为维度高的列创建索引,如性别和年龄,那年龄的维度就高于性别,性别这样的列不适合创建索引,因为维度过低。

  2. 对 where,on,group by,order by 中出现的列使用索引。

  3. 对较小的数据列使用索引,这样会使索引文件更小,同时内存中也可以装载更多的索引键。

  4. 为较长的字符串使用前缀索引。

  5. 不要过多创建索引,除了增加额外的磁盘空间外,对于DML操作的速度影响很大,因为其每增删改一次就得从新建立索引。

  6. 使用组合索引,可以减少文件索引大小,在使用时速度要优于多个单列索引。

以上仅为个人观点,不一定准确,能帮到各位那是最好的。

好啦,到这里本文就结束了,喜欢的话就来个三连击吧。

扫码关注公众号,获取更多优质内容。

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luyaran

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值