购物网站建设推进表,企业网站 阿里云,网站制作的书籍,wordpress jetpack插件欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享#xff0c;与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习#xff0c;有基础也有进阶#xff0c;有MySQL也有Oracle 索引 • MySQL版 前言一、索引1.简介2.创建2.1 索引… 欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习有基础也有进阶有MySQL也有Oracle 索引 • MySQL版 前言一、索引1.简介2.创建2.1 索引类型之逻辑分类2.1.1普通索引(单列索引) 的创建2.1.2普通索引(单列索引) 的查看2.1.3 复合索引(组合索引)的创建2.1.4 复合索引(组合索引)的应用2.1.5 唯一索引的创建2.1.6 复合索引唯一索引的比较2.1.7 主键索引的介绍(MySQLOracle)2.1.8 主键索引的创建2.1.9 主键索引 复合索引2.1.10 全文索引 小结 前言 ✅今天继续SQL的索引的篇章同样我们会讲到MySQL和Oracle的索引大家拭目以待吧 ✳️今天接着上一篇【SQL应知应会】索引一• MySQL版的内容讲的是按照逻辑分类后的唯一索引、主键索引、全文索引其中还详细的讲述了复合索引与唯一索引的比较以及复合索引与主键索引的比较 ✴️文章中提供了代码和很具体的截图代码是为了减轻大家学习的难度同时用截图可以更形象的让大家去理解知识点想要表达的意思希望大家跟着一起学起来 希望文章的内容对大家有所帮助如果有什么不足的地方大家可以在评论区或者私信我感谢大家的支持 那么快拿出你的电脑跟着文章一起学习起来吧 一、索引
1.简介
:传送门索引的优缺点 1.1 索引的优点 1.2 索引的缺点 2.创建
:传送门2.1.1普通索引 ~ 2.1.4复合索引
2.1 索引类型之逻辑分类
2.1.1普通索引(单列索引) 的创建
2.1.2普通索引(单列索引) 的查看
2.1.3 复合索引(组合索引)的创建
2.1.4 复合索引(组合索引)的应用
:传送门2.1.1普通索引 ~ 2.1.4复合索引 2.1.4.1 直接使用select *查询前面添加索引的表 2.1.4.2 查询具体的字段 2.1.4.3 遵循最左前缀原则对复合索引中的索引字段按照顺序进行查询 2.1.4.4 遵循最左前缀原则对复合索引中的索引字段不按照顺序进行查询 2.1.4.5 不遵循最左前缀原则对复合索引中的索引字段进行查询 2.1.4.6 in not in 2.1.5 唯一索引的创建 唯一索引和普通索引类似主要的区别在于唯一索引限制列的值必须唯一但允许存在空值只允许存在一条空值 1.创建单个索引
CREATE UNIQUE INDEX index_name ON table_name(col_name);2.创建多个索引 CREATE UNIQUE INDEX index_name on table_name(col_name,...);3.修改表结构——单个
ALTER TABLE table_name ADD UNIQUE index index_name(col_name);4.修改表结构——多个
ALTER TABLE table_name ADD UNIQUE index index_name(col_name,...);5.创建表的时候直接指定索引
CREATE TABLE news (id int(11) NOT NULL AUTO_INCREMENT ,title varchar(255) NOT NULL ,content varchar(255) NULL ,time varchar(20) NULL DEFAULT NULL ,PRIMARY KEY (id),UNIQUE index_name_unique(title)
)2.1.6 复合索引唯一索引的比较
情况1表中有复合与唯一对于存在的值
explain
select * from emp where empno 7499;情况2表中有复合与唯一对于不存在的值
explain
select * from emp where empno 99999;情况3表中只有复合对于不存在的值
explain
select * from emp where empno 99999;2.1.7 主键索引的介绍(MySQLOracle)
主键索引是一种特殊的唯一索引一个表只能有一个主键不允许有空值。一般是在建表的时候同时创建主键索引 导出建表语句的时候,在primary key后面会自带一个using btree 上图是MySQL的,如果是Oracle的话,会单独对主键进行create index
2.1.8 主键索引的创建
1.主键索引(创建表时添加)
CREATE TABLE news (id int(11) NOT NULL AUTO_INCREMENT ,title varchar(255) NOT NULL ,content varchar(255) NULL ,time varchar(20) NULL DEFAULT NULL ,PRIMARY KEY (id)
)2.主键索引(创建表后添加)
alter table tbl_name add primary key(col_name);3.示例
CREATE TABLE order (orderId varchar(36) NOT NULL,productId varchar(36) NOT NULL ,time varchar(20) NULL DEFAULT NULL
)
alter table order add primary key(orderId);2.1.9 主键索引 复合索引
如果在主键上建复合索引,对于主键索引和复合索引,在查找时会优先使用复合索引如果只有主键索引,使用主键索引是很快的,const级别,这是第二快的级别,最快的级别是null,即啥也没查到
explain
select * from emp where empno 73692.1.10 全文索引
在一般情况下模糊查询都是通过 like 的方式进行查询。 但是对于海量数据这并不是一个好办法在 like “value%” 可以使用索引但是对于 like “%value%” 这样的方式执行全表查询这在数据量小的表不存在性能问题但是对于海量数据全表扫描是非常可怕的事情,所以 like 进行模糊匹配性能很差。这种情况下需要考虑使用全文搜索的方式进行优化。 全文搜索在 MySQL 中是一个 FULLTEXT 类型索引。FULLTEXT 索引在 MySQL 5.6 版本之后支持 InnoDB
CREATE FULLTEXT INDEX index_fulltext_content ON table_name(col_name)注意 默认 MySQL 不支持中文全文检索 MySQL 全文搜索只是一个临时方案对于全文搜索场景更专业的做法是使用全文搜索引擎例如ElasticSearch 或 Solr。
小结 感谢大家耐心的看完这篇文章这篇文章是MySQL索引的第2篇文章我们在SQL方面写了很多内容了大家可以去我的专栏SQL应知应会 进行学习如果大家觉着还算可以那么就给个三连支持一下吧 也可以加入我的社区一起学习呀 ✅如果想要继续关注和学习后续更多的内容那就关注一下爱书不爱输的程序猿吧当然如果大家还有什么其他方面的知识点想要看可以在评论区或者私信我