Lakehouse 查询加速索引指南

概述

在大数据量查询场景下,全表扫描往往耗时较长。云器 Lakehouse 提供多种索引类型,包括布隆过滤器(等值查询加速)、倒排索引(全文检索)和向量索引(相似度搜索)。本指南按业务场景分类,帮助你快速掌握索引的创建、构建与管理方法。

涉及的 SQL 命令

命令用途适用场景
CREATE BLOOMFILTER INDEX
CREATE BLOOMFILTER INDEX
创建布隆过滤器索引高基数列(如 ID、手机号)等值查询
CREATE INVERTED INDEX
CREATE INVERTED INDEX
创建倒排索引文本字段全文检索(如日志、评论)
BUILD INDEX
BUILD INDEX
构建存量数据索引为历史数据生成索引
SHOW INDEX
SHOW INDEX
查看索引列表监控索引状态
DROP INDEX
DROP INDEX
删除索引清理不再使用的索引

前置准备

以下示例使用模拟的日志表

app_logs_idx
app_logs_idx

-- 创建测试表 CREATE TABLE IF NOT EXISTS app_logs_idx ( log_id BIGINT, user_id STRING, content STRING, log_time TIMESTAMP ); -- 插入测试数据 INSERT INTO app_logs_idx VALUES (1, 'U1001', 'User logged in successfully', '2024-06-01 10:00:00'), (2, 'U1002', 'Failed to load dashboard', '2024-06-01 10:05:00'), (3, 'U1001', 'Clicked on settings page', '2024-06-01 10:10:00');


创建布隆过滤器索引

布隆过滤器适用于高基数列的等值过滤(

=
=
IN
IN
),可大幅减少扫描的数据量。

-- 在 user_id 列创建布隆过滤器索引 CREATE BLOOMFILTER INDEX idx_user_id_bloom ON TABLE app_logs_idx(user_id);


创建倒排索引

倒排索引适用于文本字段的全文搜索,支持中文分词和多种匹配模式。

-- 在 content 列创建倒排索引 CREATE INVERTED INDEX idx_content_inverted ON TABLE app_logs_idx(content) PROPERTIES('analyzer' = 'chinese');

分析器选项

  • chinese
    chinese
    :中文分词
  • english
    english
    :英文分词
  • keyword
    keyword
    :不分词,完整匹配

构建存量数据索引

新创建的索引不会自动扫描历史数据。使用

BUILD INDEX
BUILD INDEX
为存量数据生成索引。

-- 构建倒排索引(对已有数据生效) BUILD INDEX idx_content_inverted ON app_logs_idx;


查看与删除索引

使用

SHOW INDEX
SHOW INDEX
查看表上的所有索引,使用
DROP INDEX
DROP INDEX
清理不再需要的索引。

-- 查看表上的索引 SHOW INDEX IN app_logs_idx; -- 删除索引 DROP INDEX idx_user_id_bloom;


索引生效验证

索引创建后,查询会自动利用索引加速,无需修改 SQL 语法。

-- 等值查询(自动使用布隆过滤器) SELECT * FROM app_logs_idx WHERE user_id = 'U1001'; -- 全文搜索(自动使用倒排索引) SELECT * FROM app_logs_idx WHERE match_any(content, 'dashboard settings', map('analyzer', 'chinese'));


清理测试数据

完成索引验证后,建议清理测试表:

-- 删除测试表(索引随表自动删除) DROP TABLE IF EXISTS app_logs_idx;


注意事项

  1. 布隆过滤器限制:不支持
    LIKE
    LIKE
    、范围查询(
    >
    >
    <
    <
    )或复杂类型(ARRAY/MAP/STRUCT)。
  2. 倒排索引构建
    BUILD INDEX
    BUILD INDEX
    仅对倒排索引和向量索引有效,布隆过滤器不支持存量构建。
  3. 存储开销:索引会占用额外的存储空间,通常为原表的 5%-20%。
  4. 写入性能:索引会略微增加
    INSERT
    INSERT
    /
    UPDATE
    UPDATE
    的延迟,因为需要同时更新索引结构。
  5. 自动应用:查询优化器会自动判断是否使用索引,无需在 SQL 中显式指定。

相关文档

联系我们
预约咨询
微信咨询
电话咨询