网站首页 > 博客文章 正文
索引的概述
索引用来快速的查询那些具有特定值的记录。所有的MySQL索引都是以B+树的形式保存的。如果没有索引,执行查询时MySQL必须从第一个记录开始,进行全表扫描,直至找到合适的记录。表里的记录越多,这个操作越耗时。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍。
(1) 主键索引
主键索引是一种唯一性索引,但是它必须指定“PRIMARY KEY”。主键一般在创建表的时候指定,并且一张表只能有一个主键。
#创建主键索引:
默认情况下,MySQL会为主键自动添加主键索引。
也可以后期添加主键:
Alter table table_name add primary key(field_name);
#删除主键:
Alter table table_name drop primary key;
#查看索引
show index from table_name;
show keys from table_name;
(2) 全文索引
全文索引一般用于查询文本或者长内容而建立。
#全文索引的使用方法
-- 错误使用方法
select * from articles where body like '%mysql%';
-- 建立全文索引
alter table articles add FULLTEXT index fulltext_article(body);
-- 正确使用方法
select * from articles where match (body) against('mysql');
使用全文索引的注意事项:
- MySql自带的全文索引只能用于数据库引擎为MYISAM的数据表,如果是其他数据引擎,则全文索引不会生效.
- MySQL不能对中文进行全文索引,只适用于英文.
- 使用全文索引,只能用固定的语法:match(字段名)… against(关键字).
- MySQL全文索引所能找到的默认最小长度为4个字符,并且如果查询的字符串包含停止词(常见字符),那么该停止词将会被忽略。
(3) 唯一索引
这种索引的所有值都只能出现一次,即必须唯一。
默认的,在创建表时指定字段为唯一时,自动为其创建唯一索引。
#创建唯一索引:
CREATE UNIQUE INDEX <索引的名字> ON tablename (列的列表);
ALTER TABLE tablename ADD UNIQUE [索引的名字] (列的列表);
CREATE TABLE tablename ( [...], UNIQUE [索引的名字] (列的列表) );
注意:unique字段可以为null,可以有多个null,但是如果是字符串的话只能有一个为‘’。
(4) 普通索引
普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。因此,应该只为那些最经常出现在查询条件(WHEREcolumn=)或排序条件(ORDERBYcolumn)中的数据列创建索引。只要有可能,就应该选择一个数据最整齐、最紧凑的数据列(如一个整数类型的数据列)来创建索引。
创建方式:
create index 索引名 on 表 (列1,列名2);
-- 案例
-- 未建立索引时查询 1.45s
select * from emp where ename ='MFPkFv';
-- 创建普通索引
create index index_ename on emp (ename);
-- 查询 4ms
select * from emp where ename ='MFPkFv';
猜你喜欢
- 2025-06-18 一行SQL没改,查询速度飙升10倍?揭秘数据库“索引”的加速魔法
- 2025-06-18 MySql底层索引与数据优化「上篇」
- 2025-06-18 浅聊MySQL索引分类(mysql索引分类及区别)
- 2025-06-18 MySQL 批量操作,一次插入多少行数据效率最高?
- 2025-06-18 深挖MYSQL大表加索引(mysql 大表加索引)
- 2025-06-18 MySQL批量生成建表语句(mysql批量新增语句)
- 2025-06-18 MySql索引创建原则有哪些?(mysql索引创建和使用)
- 2025-06-18 MySQL索引基础入门,一篇讲清楚(mysql索引实战)
- 2025-06-18 「Mysql」Mysql建索引和不建索引的效率对比
- 2025-06-18 看这篇就够了!MySQL 索引知识点超全总结
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)