前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >MySQL全文索引

MySQL全文索引

作者头像
Petrochor
发布2022-09-20 15:41:20
发布2022-09-20 15:41:20
69600
代码可运行
举报
文章被收录于专栏:StephenStephen
运行总次数:0
代码可运行

MySQL在使用LIKE进行模糊匹配查询的时候,字段索引会失效,因此在数据量较大的情况下,LIKE查询效率极低,就可以使用全文索引(FullText)进行优化。

全文索引(FullText)是将存储于数据库中的整本书或整篇文章中的任意信息查找出来的技术。它可以根据需要获得全文中有关章、节、段、句、词等信息,也可以进行各种统计和分析。

MySQL还提供了支持中文、日文和韩文的内置全文解析器ngram。

创建全文索引

创建表时创建索引

代码语言:javascript
代码运行次数:0
复制
CREATE TABLE `articles`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NULL DEFAULT NULL,
  `content` text NULL DEFAULT NULL,
  FULLTEXT INDEX `content`(`content`) WITH PARSER `ngram`
) ENGINE = InnoDB;

为现有表添加索引

代码语言:javascript
代码运行次数:0
复制
ALTER TABLE `articles` ADD FULLTEXT INDEX `content`(`content`) WITH PARSER ngram;

删除全文索引

代码语言:javascript
代码运行次数:0
复制
ALTER TABLE `articles` DROP INDEX `content`;

使用全文索引

自然语言全文索引

将搜索字符串解释为自然人类语言(自有文本)中的短语,没有特殊运算符,但双引号(“)除外。

代码语言:javascript
代码运行次数:0
复制
EXPLAIN SELECT * FROM `articles` WHERE MATCH(content) against ('PHP' in NATURAL LANGUAGE mode);
布尔全文索引

使用此修饰符,某些字符在搜索字符串中的单词的开头或结尾处具有特殊含义。在以下查询中, +和-运算符分别表示必须存在或不存在单词才能进行匹配。

代码语言:javascript
代码运行次数:0
复制
EXPLAIN SELECT * FROM `articles` WHERE MATCH(content) against ('PHP' IN BOOLEAN MODE);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/08/05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建全文索引
  • 使用全文索引
    • 自然语言全文索引
    • 布尔全文索引
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档