MySQL系列(31):InnoDB 全文索引

官方文档-15.6.2.4 InnoDB Full-Text Indexes

Full-text indexes(全文索引)可在基于文本类型的列(CHAR, VARCHAR 或 text 列) 上创建,可以加快对这些列中包含的数据的查询和DML操作。

全文索引被定义为CREATE TABLE语句的一部分,或使用ALTER TABLECREATE index添加到现有表。

要执行全文索引需要使用 MATCH() ... AGAINST 语法。Section 12.10, “Full-Text Search Functions”.

阅读更多

MySQL之Row XXX was cut by GROUP_CONCAT()错误解决

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错误解决

MySQL 根据子句进行条件更新或删除时,报如下错误:You can’t specify target table for update in FROM clause

错误意思是指:在同一语句中,update 和 select 子句不能是同一个表。

解决方式:需要把 SELECT 条件子句的结果集转为中间临时表,此临时表会依赖于 SELECT 条件子句驱动表。

阅读更多

MySQL系列(30): MySQL 递归查询

开发中经常会碰到传父类id,查出其下所有子类需求。

实现思路:拿当前查到的 id 递归查询 parent_id = id,合并所有的 id 到一个字段 ids,然后查 id 在 ids 中的数据 。

实现方案:一种是在代码中递归查询实现;另一种是在 SQL语句递归查询实现。

本篇主要描述在 MySQL 中的递归查询SQL语句实现。

阅读更多

MySQL系列(27):查询数据库中各个表的容量及大小

1
2
3
4
5
6
7
8
9
10
11
12
SELECT
table_schema AS '数据库',
table_name AS '表名',
table_rows AS '记录数',
TRUNCATE (data_length / 1024 / 1024, 2) AS '数据容量(MB)',
TRUNCATE (index_length / 1024 / 1024, 2) AS '索引容量(MB)'
FROM
information_schema.TABLES
WHERE
table_schema = 'db_name' -- 数据库名字
ORDER BY
table_rows DESC;
阅读更多