欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流
本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle
✅今天继续
SQL的索引
的篇章,同样我们会讲到MySQL和Oracle的索引,大家拭目以待吧
✳️今天接着上一篇【SQL应知应会】索引(一)• MySQL版的内容,讲的是按照逻辑分类后的唯一索引、主键索引、全文索引,其中还详细的讲述了复合索引与唯一索引的比较以及复合索引与主键索引的比较
✴️文章中提供了代码和很具体的截图,代码是为了减轻大家学习的难度,同时用截图可以更形象的让大家去理解知识点想要表达的意思,希望大家跟着一起学起来
希望文章的内容对大家有所帮助,如果有什么不足的地方,大家可以在评论区或者私信我,感谢大家的支持
那么,快拿出你的电脑,跟着文章一起学习起来吧
:传送门索引的优缺点
1.1 索引的优点
1.2 索引的缺点
:传送门2.1.1普通索引 ~ 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
唯一索引和普通索引类似,主要的区别在于,唯一索引限制列的值必须唯一,但允许存在空值(只允许存在一条空值)
1.创建单个索引
CREATE UNIQUE INDEX index_name ON table_name(col_name);
CREATE UNIQUE INDEX index_name on table_name(col_name,...);
ALTER TABLE table_name ADD UNIQUE index index_name(col_name);
ALTER TABLE table_name ADD UNIQUE index index_name(col_name,...);
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)
)
explain
select * from emp where empno = '7499';
explain
select * from emp where empno = '99999';
explain
select * from emp where empno = '99999';
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`)
)
alter table tbl_name add primary key(col_name);
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`);
const
级别,这是第二快的级别,最快的级别是null
,即啥也没查到explain
select * from emp where empno = 7369
但是,对于海量数据,这并不是一个好办法,在 like “value%” 可以使用索引,但是对于 like “%value%” 这样的方式,执行全表查询,这在数据量小的表,不存在性能问题,但是对于海量数据,全表扫描是非常可怕的事情,所以 like 进行模糊匹配性能很差。这种情况下,需要考虑使用全文搜索的方式进行优化。
FULLTEXT
类型索引。FULLTEXT 索引在 MySQL 5.6 版本之后支持 InnoDBCREATE FULLTEXT INDEX index_fulltext_content ON table_name(col_name)
注意: 默认 MySQL 不支持中文全文检索!
MySQL 全文搜索只是一个临时方案,对于全文搜索场景,更专业的做法是使用全文搜索引擎,例如ElasticSearch 或 Solr。
感谢大家耐心的看完这篇文章,这篇文章是
MySQL索引
的第2
篇文章,我们在SQL方面写了很多内容了,大家可以去我的专栏SQL应知应会 进行学习,如果大家觉着还算可以,那么就给个三连支持一下吧
也可以加入我的社区一起学习呀
✅如果想要继续关注和学习后续更多的内容,那就关注一下爱书不爱输的程序猿吧,当然,如果大家还有什么其他方面的知识点想要看,可以在评论区或者私信我