Zonemap Index 由系统自动维护,用户无需创建,也无法通过 SQL 主动创建或删除。Zonemap Index 属于系统内置索引,用户无需对其进行任何配置。系统会针对每一列、每一个数据块自动记录最大值、最小值以及是否包含 NULL 等统计信息。=)、范围查询(>、<、>=、<=、BETWEEN)以及 IS NULL 等场景,优化器可以利用最大值、最小值和 NULL 标识判断数据文件或数据块是否包含满足条件的数据。如果不包含,则跳过对应的文件或数据块。通过这种方式,可减少不必要的 I/O 开销,有效加速查询过程。Bloom Filter Index 是基于布隆过滤器(Bloom Filter)的一种跳数索引。它利用布隆过滤器快速判断指定数据块中是否可能存在等值查询条件命中的数据,对不可能命中的数据块直接跳过,从而减少 I/O、加速查询。Bloom Filter Index 适用于等值查询(= 和 IN)的加速,对高基数字段(不同值数量较多的字段)效果更佳。Bloom Filter Index 仅对 = 和 IN 谓词有加速效果,对 !=、NOT IN、>、<、LIKE 等其他谓词无效。SMALLINT、MEDIUMINT、INT、BIGINT(不支持 TINYINT)DECIMALCHAR、VARCHAR、TEXT 等DATE、TIME、DATETIMEWHERE 条件中的等值谓词或 IN 谓词所涉及的字段已创建 Bloom Filter Index,优化器会自动应用该索引进行查询加速,无需用户显式指定。CREATE INDEX [IF NOT EXISTS] 索引名称 USING BLOOM_FILTER ON 表名 (列名);
DROP INDEX [IF EXISTS] 索引名称 ON 表名;
-- 方式一:查看建表语句SHOW CREATE TABLE 表名;-- 方式二:查看表上的所有索引SHOW INDEX FROM 表名;-- 方式三:查询元数据SELECT * FROM information_schema.STATISTICSWHERE TABLE_SCHEMA = '库名' AND TABLE_NAME = '表名';
Bitmap Index 是用位图表示的索引,对列的每个键值建立一个位图。相对于其他索引,Bitmap Index 占用的存储空间较小,构建和查询效率较高;但其修改操作的锁粒度较大,不适合频繁更新的场景。SELECT COUNT(*) FROM usersWHERE city = '南京市' AND job = '医生' AND device_type = 'iphone' AND gender = '男';
Bitmap Index,数据库可以通过高效的位运算(AND / OR)精确定位目标数据,减少磁盘 I/O。筛选后的结果集越小,Bitmap Index 的优势越明显。Bitmap Index,使所有相关查询都能受益于索引加速。Bitmap Index 支持以下谓词:=、!=、>、<、>=、<=、IN、IS NULL、IS NOT NULL。多谓词组合时,AND 连接可获得最佳剪枝效果。TINYINT、SMALLINT、MEDIUMINT、INT、BIGINTDECIMALCHAR、VARCHAR、TEXT 等DATE、TIME、DATETIMECREATE INDEX [IF NOT EXISTS] 索引名称 USING BITMAP ON 表名 (列名);
DROP INDEX [IF EXISTS] 索引名称 ON 表名;
-- 方式一:查看建表语句SHOW CREATE TABLE 表名;-- 方式二:查看表上的所有索引SHOW INDEX FROM 表名;-- 方式三:查询元数据SELECT * FROM information_schema.STATISTICSWHERE TABLE_SCHEMA = '库名' AND TABLE_NAME = '表名';
文档反馈