【MySQL】14. 全文索引(选学)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: 【MySQL】14. 全文索引(选学)

全文索引的创建
当对文章字段或有大量文字的字段进行检索时,会使用到全文索引。
MySQL提供全文索引机制,但是有要求,要求表的存储引擎必须是MyISAM,而且默认的全文索引支持英文,不支持中文。
(为啥一定要用MyISAM呢? -- 因为InnoDB不支持全文索引)
如果对中文进行全文检索,可以使用sphinx的中文版(coreseek)。

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

这里的省略号表示的都是大文本的意思

查询有没有database数据
如果使用如下查询方式,虽然查询出数据,但是没有使用到全文索引

mysql> select * from articles where body like '%database%';
+----+-------------------+------------------------------------------+
| id |             title |                                     body |
+----+-------------------+------------------------------------------+
|  1 |    MySQL Tutorial |             DBMS stands for DataBase ... |
|  5 | MySQL vs. YourSQL | In the following database comparison ... |
+----+-------------------+------------------------------------------+

可以用explain工具看一下,是否使用到索引

mysql> explain select * from articles where body like '%database%'\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: articles
type: ALL
possible_keys: NULL
key: NULL <== keynull表示没有用到索引
key_len: NULL
ref: NULL
rows: 6
Extra: Using where
1 row in set (0.00 sec)

如何使用全文索引呢?

mysql> SELECT * FROM articles
    -> WHERE MATCH (title,body) AGAINST ('database');
+----+-------------------+------------------------------------------+
| id |             title |                                     body |
+----+-------------------+------------------------------------------+
|  5 | MySQL vs. YourSQL | In the following database comparison ... |
|  1 |    MySQL Tutorial |             DBMS stands for DataBase ... |
+----+-------------------+------------------------------------------+

通过explain来分析这个sql语句

mysql> explain SELECT * FROM articles WHERE MATCH (title,body) AGAINST
('database')\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: articles
type: fulltext
possible_keys: title
key: title <= key用到了title
key_len: 0
ref:
rows: 1
Extra: Using where

查询索引

  • 第一种方法: show keys from 表名
    mysql> show keys from goods\G
    *********** 1. row ***********
    Table: goods <= 表名
    Non_unique: 0 <= 0表示唯一索引
    Key_name: PRIMARY <= 主键索引
    Seq_in_index: 1
    Column_name: goods_id <= 索引在哪列
    Collation: A
    Cardinality: 0
    Sub_part: NULL
    Packed: NULL
    Null:
    Index_type: BTREE <= 以二叉树形式的索引
    Comment:
    1 row in set (0.00 sec)
    
    第二种方法: show index from 表名;
    第三种方法(信息比较简略): desc 表名;
struct page
{
   
    struct page *next;
    string page *prev;
    char buffer[NUM];
};---16KB , new page,
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
SQL 自然语言处理 关系型数据库
MySQL索引之全文索引(FULLTEXT)
MySQL索引之全文索引(FULLTEXT) MySQL创建全文索引 使用索引时数据库性能优化的必备技能之一。
6421 0
|
1月前
|
NoSQL 关系型数据库 MySQL
[AIGC] 对比MySQL全文索引,RedisSearch,和Elasticsearch的详细区别
[AIGC] 对比MySQL全文索引,RedisSearch,和Elasticsearch的详细区别
209 1
|
1月前
|
关系型数据库 MySQL 测试技术
【MySQL】16. 事务管理( 重点 | 选学 ) -- 3
【MySQL】16. 事务管理( 重点 | 选学 ) -- 3
30 0
|
SQL 自然语言处理 关系型数据库
MySQL 8.0 InnoDB全文索引可用于生产环境吗
MySQL 8.0 InnoDB全文索引可用于生产环境吗
205 0
|
存储 算法 搜索推荐
②MySQL的索引(普通索引、唯一索引,主键索引、组合索引、全文索引、空间索引)相关操作
MySQL的索引(普通索引、唯一索引,主键索引、组合索引、全文索引、空间索引)相关操作
241 0
②MySQL的索引(普通索引、唯一索引,主键索引、组合索引、全文索引、空间索引)相关操作
|
存储 算法 关系型数据库
①MySQL的索引(普通索引、唯一索引,主键索引、组合索引、全文索引、空间索引)相关操作
MySQL的索引(普通索引、唯一索引,主键索引、组合索引、全文索引、空间索引)相关操作
116 0
①MySQL的索引(普通索引、唯一索引,主键索引、组合索引、全文索引、空间索引)相关操作
|
关系型数据库 MySQL 索引
【MySQL】全文索引
【MySQL】全文索引
95 0
【MySQL】全文索引
|
存储 SQL 自然语言处理
mysql索引(八)全文索引
全文索引(FULLTEXT ):可用于 MyISAM 表,mysql5.6之后也可用于innodb表, 用于在一篇文章中,检索文本信息的, 针对较大的数据,生成全文索引很耗时和空间。
423 0
mysql索引(八)全文索引
|
关系型数据库 MySQL 索引
【实施工程师之家】——mysql四种索引PRIMARY(主键索引)、INDEX(一般索引)、UNIQUE(非空索引)、FULLTEXT(全文索引)应用
【实施工程师之家】——mysql四种索引PRIMARY(主键索引)、INDEX(一般索引)、UNIQUE(非空索引)、FULLTEXT(全文索引)应用
330 0
【实施工程师之家】——mysql四种索引PRIMARY(主键索引)、INDEX(一般索引)、UNIQUE(非空索引)、FULLTEXT(全文索引)应用
|
存储 自然语言处理 算法
mysql全文索引FULLTEXT的哈希与BTREE方法对比
mysql全文索引FULLTEXT的哈希与BTREE方法对比
429 0
mysql全文索引FULLTEXT的哈希与BTREE方法对比

热门文章

最新文章