【SQL应知应会】索引(二)• MySQL版

这篇具有很好参考价值的文章主要介绍了【SQL应知应会】索引(二)• MySQL版。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【SQL应知应会】索引(二)• MySQL版,SQL应知应会,sql,mysql,oracle,数据库,大数据,面试,索引

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流

本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle

【SQL应知应会】索引(二)• MySQL版,SQL应知应会,sql,mysql,oracle,数据库,大数据,面试,索引

前言

✅今天继续SQL的索引的篇章,同样我们会讲到MySQL和Oracle的索引,大家拭目以待吧
✳️今天接着上一篇【SQL应知应会】索引(一)• MySQL版的内容,讲的是按照逻辑分类后的唯一索引、主键索引、全文索引,其中还详细的讲述了复合索引与唯一索引的比较以及复合索引与主键索引的比较
✴️文章中提供了代码和很具体的截图,代码是为了减轻大家学习的难度,同时用截图可以更形象的让大家去理解知识点想要表达的意思,希望大家跟着一起学起来
💖希望文章的内容对大家有所帮助,如果有什么不足的地方,大家可以在评论区或者私信我,感谢大家的支持
💻那么,快拿出你的电脑,跟着文章一起学习起来吧

一、索引

1.简介

👉:传送门💖索引的优缺点💖

1.1 索引的优点
1.2 索引的缺点

2.索引类型之逻辑分类

👉:传送门💖2.1普通索引 ~ 2.4复合索引💖

2.1普通索引(单列索引) 的创建

2.2普通索引(单列索引) 的查看

2.3 复合索引(组合索引)的创建

2.4 复合索引(组合索引)的应用

👉:传送门💖2.1普通索引 ~ 2.4复合索引💖

2.4.1 直接使用select *查询前面添加索引的表
2.4.2 查询具体的字段
2.4.3 遵循最左前缀原则,对复合索引中的索引字段按照顺序进行查询
2.4.4 遵循最左前缀原则,对复合索引中的索引字段不按照顺序进行查询
2.4.5 遵循最左前缀原则,对复合索引中的索引字段进行查询
2.4.6 in & not in

2.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.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';

【SQL应知应会】索引(二)• MySQL版,SQL应知应会,sql,mysql,oracle,数据库,大数据,面试,索引

2.7 主键索引的介绍(MySQL&Oracle)

  • 主键索引是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值
  • 一般是在建表的时候同时创建主键索引
    • 导出建表语句的时候,在primary key后面会自带一个using btree

      • 【SQL应知应会】索引(二)• MySQL版,SQL应知应会,sql,mysql,oracle,数据库,大数据,面试,索引
    • 上图是MySQL的,如果是Oracle的话,会单独对主键进行create index

      • 【SQL应知应会】索引(二)• MySQL版,SQL应知应会,sql,mysql,oracle,数据库,大数据,面试,索引

2.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.9 主键索引 & 复合索引

  • 如果在主键上建复合索引,对于主键索引和复合索引,在查找时会优先使用复合索引
  • 如果只有主键索引,使用主键索引是很快的,const级别,这是第二快的级别,最快的级别是null,即啥也没查到
explain
select * from emp where empno = 7369

【SQL应知应会】索引(二)• MySQL版,SQL应知应会,sql,mysql,oracle,数据库,大数据,面试,索引

2.10 全文索引

  • 在一般情况下,模糊查询都是通过 like 的方式进行查询。

但是,对于海量数据,这并不是一个好办法,在 like “value%” 可以使用索引,但是对于 like “%value%” 这样的方式,执行全表查询,这在数据量小的表,不存在性能问题,但是对于海量数据,全表扫描是非常可怕的事情,所以 like 进行模糊匹配性能很差。这种情况下,需要考虑使用全文搜索的方式进行优化
【SQL应知应会】索引(二)• MySQL版,SQL应知应会,sql,mysql,oracle,数据库,大数据,面试,索引

  • 全文搜索在 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应知应会 进行学习,如果大家觉着还算可以,那么就给个三连支持一下吧
🏡也可以加入我的社区一起学习呀
✅如果想要继续关注和学习后续更多的内容,那就关注一下爱书不爱输的程序猿吧,当然,如果大家还有什么其他方面的知识点想要看,可以在评论区或者私信我

【SQL应知应会】索引(二)• MySQL版,SQL应知应会,sql,mysql,oracle,数据库,大数据,面试,索引文章来源地址https://www.toymoban.com/news/detail-651052.html

到了这里,关于【SQL应知应会】索引(二)• MySQL版的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【SQL应知应会】表分区(二)• MySQL版

    欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 本文收录于SQL应知应会专栏, 本专栏 主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle

    2024年02月16日
    浏览(43)
  • 【SQL应知应会】行列转换(一)• MySQL版

    欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 本文收录于SQL应知应会专栏, 本专栏 主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle 先建一个表 练习 三种插入 修改列类型 1.1为何进行行转列? 现实中用到的一

    2024年02月12日
    浏览(39)
  • 【SQL应知应会】表分区(四)• MySQL版

    欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 本文收录于SQL应知应会专栏, 本专栏 主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle

    2024年02月17日
    浏览(42)
  • 【SQL应知应会】表分区(五)• MySQL版

    欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 本文收录于SQL应知应会专栏, 本专栏 主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle

    2024年02月16日
    浏览(43)
  • 【SQL应知应会】表分区(三)• MySQL版

    欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 本文收录于SQL应知应会专栏, 本专栏 主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle

    2024年02月16日
    浏览(50)
  • 【SQL应知应会】行列转换(二)• MySQL版

    欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 本文收录于SQL应知应会专栏, 本专栏 主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle

    2024年02月11日
    浏览(43)
  • 【SQL应知应会】表分区(四)• Oracle版

    欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 本文收录于SQL应知应会专栏, 本专栏 主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle

    2024年02月14日
    浏览(34)
  • 【SQL应知应会】表分区(三)• Oracle版

    欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 本文收录于SQL应知应会专栏, 本专栏 主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle

    2024年02月14日
    浏览(37)
  • 【SQL应知应会】表分区(一)• Oracle版

    欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 本文收录于SQL应知应会专栏, 本专栏 主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle

    2024年02月16日
    浏览(35)
  • 【SQL应知应会】行列转换(三)• Oracle版

    欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 本文收录于SQL应知应会专栏, 本专栏 主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle

    2024年02月12日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包