首批通过分布式安全可靠测评,为关键业务系统打造
全文索引
更新时间:2024-12-02 23:00:00
OceanBase 数据库通过 CREATE TABLE 语句使用 FULLTEXT 关键字来支持创建全文索引。在 OceanBase 数据库的 MySQL 模式下,全文索引可以应用于 CHAR、VARCHAR 和 TEXT 类型的列。此外,OceanBase 数据库允许在主表上建立多个全文索引,并且对于同一列也可以建立多个全文索引。
非分区表和分区表上有无主键都可以创建全文索引,创建全文索引限制如下:
- 全文索引仅支持应用于
CHAR、VARCHAR和TEXT类型的列。 - 当前版本只支持创建局部(
LOCAL)全文索引。 - 创建全文索引时不可以指定
UNIQUE关键字。 - 如果要创建涉及多列的全文索引,则必须确保这些列具有相同的字符集。
通过使用这些语法和规则,OceanBase 数据库的全文索引功能提供了对文本数据的高效搜索和检索能力。
DML 操作
对于已创建包含全文索引的表,支持 INSERT INTO ON DUPLICATE KEY、REPLACE INTO、多表的更新/删除、以及可更新视图等复杂 DML 操作。
示例如下:
INSERT INTO ON DUPLICATE KEY:
INSERT INTO articles VALUES ('OceanBase', 'Fulltext search index support insert into on duplicate key') ON DUPLICATE KEY UPDATE title = 'OceanBase 4.3.3';REPLACE INTO:
REPLACE INTO articles(title, context) VALUES ('Oceanbase 4.3.3', 'Fulltext search index support replace');多表的更新/删除。
创建表
tbl1。CREATE TABLE tbl1 (a int PRIMARY KEY, b text, FULLTEXT INDEX(b));创建表
tbl2。CREATE TABLE tbl2 (a int PRIMARY KEY, b text);多个表的更新(
UPDATE)语句。UPDATE tbl1 JOIN tbl2 ON tbl1.a = tbl2.a SET tbl1.b = 'dddd', tbl2.b = 'eeee';UPDATE tbl1 JOIN tbl2 ON tbl1.a = tbl2.a SET tbl1.b = 'dddd';UPDATE tbl1 JOIN tbl2 ON tbl1.a = tbl2.a SET tbl2.b = tbl1.b;多个表的删除(
DELETE)语句。DELETE tbl1, tbl2 FROM tbl1 JOIN tbl2 ON tbl1.a = tbl2.a;DELETE tbl1 FROM tbl1 JOIN tbl2 ON tbl1.a = tbl2.a;DELETE tbl1 FROM tbl1 JOIN tbl2 ON tbl1.a = tbl2.a;
可更新视图 DML。
创建视图
fts_view。CREATE VIEW fts_view AS SELECT * FROM tbl1;INSERT语句用于可更新视图。INSERT INTO fts_view VALUES(3, 'cccc'), (4, 'dddd');UPDATE语句用于可更新视图。UPDATE fts_view SET b = 'dddd';UPDATE fts_view JOIN normal ON fts_view.a = tbl2.a SET fts_view.b = 'dddd', tbl2.b = 'eeee';DELETE语句用于可更新视图。DELETE FROM fts_view WHERE b = 'dddd';DELETE tbl1 FROM fts_view JOIN tbl1 ON fts_view.a = tbl1.a AND 1 = 0;
相关文档
有关创建全文索引的详细信息,参见 创建索引 中的 创建全文索引 章节。