当前位置: 首页 > news >正文

mysql索引 -- 全文索引介绍(如何创建,使用),explain关键字

目录

全文索引

引入

介绍

创建

使用

表数据

简单搜索

explain关键字

使用全文索引


mysql索引结构详细介绍 -- mysql索引 -- 索引的硬件理解(磁盘,磁盘与系统),软件理解(mysql,与系统io,buffer pool),索引结构介绍和理解(page内部,page之间,为什么是b+树)-CSDN博客

全文索引

引入

如果需要对文章进行检索

  • 假设它有一列body字段(text类型),可以容纳上万个字符
  • 而我们想要找到body中某一行中的一些字段,就需要使用全文索引

之前介绍的b+树构成的索引,都是想要找到某一列/某几列的数据,而不是这里想要的一列中的一部分

介绍

是一种特殊类型的索引,主要用于加速对大文本数据的搜索

  • 适合实现搜索引擎功能

目前,只有MyISAM存储引擎支持全文索引,且只支持英文的

  • 特点:支持高并发读

创建

语法 -- FULLTEXT(列名)

  • 默认以列名为索引名称

使用

表数据

CREATE TABLE articles (id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,title VARCHAR(200),body TEXT,FULLTEXT (title,body)
)engine=MyISAM;INSERT INTO articles (title,body) VALUES
('MySQL Tutorial','DBMS stands for DataBase ...'),
('How To Use MySQL Well','After you went through a ...'),
('Optimizing MySQL','In this tutorial we will show ...'),
('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
('MySQL vs. YourSQL','In the following database comparison ...'),
('MySQL Security','When configured properly, MySQL ...');

因为我们一般会先确定文章标题,然后再在文章内部查询

  • 所以我们以(title,body)创建全文索引 -- FULLTEXT (title,body)

简单搜索

可以使用like在列内部进行模糊匹配:

  • select * from articles where body like '%database%';
  • 这是简单搜索,并没有用到全文索引
  • 普通搜索时不会自动使用全文索引
explain关键字

在sql语句前添加explain关键字,可以显示mysql会如何执行这条语句(执行计划):

select_type:查询类型

  • simple:简单查询
  • primary:主查询

type:连接类型,表明访问的效率

  • all :全部遍历
  • index:索引扫描

key:实际使用的索引

  • null:没有使用

使用全文索引

语法 -- where + match(key值) against ('要查找的字符')

再次查看执行计划:

  • type :fulltext -- 使用全文索引
  • key :title -- 指明使用的是哪一个全文索引(索引名)

http://www.lryc.cn/news/448581.html

相关文章:

  • Wayfair封号的常见原因及解决方案解析
  • 计算机视觉方面的一些模块
  • 进阶美颜功能技术开发方案:探索视频美颜SDK
  • 【重学 MySQL】三十八、group by的使用
  • SSM框架VUE电影售票管理系统开发mysql数据库redis设计java编程计算机网页源码maven项目
  • 基于Hive和Hadoop的白酒分析系统
  • 【软考】高速缓存的组成
  • UniApp基于xe-upload实现文件上传组件
  • 以太网交换安全:端口隔离
  • 望繁信科技CTO李进峰受邀在上海外国语大学开展流程挖掘专题讲座
  • nicegui组件button用法深度解读,源代码IDE运行和调试通过
  • 数据结构:树(并查集)
  • 校园二手交易平台的小程序+ssm(lw+演示+源码+运行)
  • 代码随想录训练营第46天|回文子序列
  • 使用 PowerShell 命令更改 RDP 远程桌面端口(无需修改防火墙设置)
  • bilibili实现批量发送弹幕功能
  • 如何查看上网记录及上网时间?5种按步操作的方法分享!【小白也能学会!】
  • Nisshinbo日清纺pvs1114太阳模拟器手测
  • 多线程复杂系统调试利器——assert()
  • 【2024.9.28练习】青蛙的约会
  • Python入门:类的异步资源管理与回收( __del__ 方法中如何调用异步函数)
  • Android开发中的ViewModel
  • Vue 3 文件编译流程详解与 Babel 的使用
  • Android常用C++特性之std::chrono
  • [Oracle] ORA-04036: 实例使用的 PGA 内存超出 PGA_AGGREGATE_LIMIT
  • 一次 Spring 扫描 @Component 注解修饰的类坑
  • 深度学习:调整学习率
  • Java项目实战II基于Java+Spring Boot+MySQL的厨艺交流平台设计与实现(源码+数据库+文档)
  • 第二十节:学习Redis缓存数据库实现增删改查(自学Spring boot 3.x的第五天)
  • Android SQLite的基本使用、生成Excel文件保存到本地