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

MySQL全文索引

原创
作者头像
Petrochor
发布2022-08-09 09:16:44
5490
发布2022-08-09 09:16:44
举报
文章被收录于专栏:StephenStephen

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

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

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

创建全文索引

创建表时创建索引

代码语言:sql
复制
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;

为现有表添加索引

代码语言:sql
复制
ALTER TABLE `articles` ADD FULLTEXT INDEX `content`(`content`) WITH PARSER ngram;

删除全文索引

代码语言:sql
复制
ALTER TABLE `articles` DROP INDEX `content`;

使用全文索引

自然语言全文索引

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

代码语言:sql
复制
EXPLAIN SELECT * FROM `articles` WHERE MATCH(content) against ('PHP' in NATURAL LANGUAGE mode);

布尔全文索引

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

代码语言:sql
复制
EXPLAIN SELECT * FROM `articles` WHERE MATCH(content) against ('PHP' IN BOOLEAN MODE);

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建全文索引
  • 使用全文索引
    • 自然语言全文索引
      • 布尔全文索引
      相关产品与服务
      云数据库 SQL Server
      腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档