MySQL系列(32):全文搜索功能
MySQL 中的全文索引的索引类型是 FULLTEXT 。
MySQL 的全文索引只能用于 InnoDB 或 MyISAM 表,并且只能为 CHAR、VARCHAR 或 TEXT 列创建。
MySQL 中的全文索引的索引类型是 FULLTEXT 。
MySQL 的全文索引只能用于 InnoDB 或 MyISAM 表,并且只能为 CHAR、VARCHAR 或 TEXT 列创建。
官方文档-15.6.2.4 InnoDB Full-Text Indexes
Full-text indexes
(全文索引)可在基于文本类型的列(CHAR, VARCHAR 或 text 列) 上创建,可以加快对这些列中包含的数据的查询和DML操作。
全文索引被定义为CREATE TABLE
语句的一部分,或使用ALTER TABLE
或CREATE index
添加到现有表。
要执行全文索引需要使用 MATCH() ... AGAINST
语法。Section 12.10, “Full-Text Search Functions”.
MySQL 生成顺序自增的序号列。MySQL 支持 SQL 中使用变量。
可以满足前端列表序号列从后端返回场景,当然前端也能处理。
根据给出的主键 id ,计算出该行所在的分页。SQL 语句的分页关键词 Limit
需要用的数据有 offset
,size
。而在应用端展示,会有页码(pageNo)和 每页条数(pageSize),总数(total) 三个数据。
MySQL数据库,一个更 UPDATE 更新用到了 group_concat 函数,报:Row XXX was cut by GROUP_CONCAT() 的错误,但单独的查询没有报错。
错误含义是:GROUP_CONCAT 有最大的长度限制,超过最大长度就会被截断掉。由 group_concat_max_len 系统变量限制最大长度,其默认值为 1024。
MySQL 根据子句进行条件更新或删除时,报如下错误:You can’t specify target table for update in FROM clause
错误意思是指:在同一语句中,update 和 select 子句不能是同一个表。
解决方式:需要把 SELECT 条件子句的结果集转为中间临时表,此临时表会依赖于 SELECT 条件子句驱动表。
开发中经常会碰到传父类id,查出其下所有子类需求。
实现思路:拿当前查到的 id 递归查询 parent_id = id,合并所有的 id 到一个字段 ids,然后查 id 在 ids 中的数据 。
实现方案:一种是在代码中递归查询实现;另一种是在 SQL语句递归查询实现。
本篇主要描述在 MySQL 中的递归查询SQL语句实现。
对后端开发来说,接口性能优化多少都是会碰到的事,没主动找上你也要思考整理优化的思路和可能的方案。
做技术的,一定要梳理思路,勤于总结,才是快速提升之道。
1 | SELECT |
MySQL 对 col_name IS NULL
执行了优化。如果 WHERE 子句包含声明为 NOT NULL
的列的 col_name IS NULL
条件,则该表达式将被优化掉。