GBase 8c
其他
文章

GBase 8c 部分索引示例-建立一个部分索引来排除公值

发表于2023-12-06 14:52:5645次浏览5个评论

GBase 8c 支持部分索引。例如,建立一个部分索引来排除公值

假设我们要在一个数据库中保存网页服务器访问日志。大部分访问都来自于我们组织内的IP地址,但是有些来自于其他地方(如使用拨号连接的员工)。如果我们主要通过IP搜索来自于外部的访问,我们就没有必要索引对应于我们组织内网的IP范围。

假设有这样一个表:

CREATE TABLE access_log (

    url varchar,

    client_ip inet,

    ...

);

用以下命令可以创建适用于我们的部分索引:

CREATE INDEX access_log_client_ip_ix ON access_log (client_ip)

WHERE NOT (client_ip > inet '192.168.100.0' AND

           client_ip < inet '192.168.100.255');

一个使用该索引的典型查询是:

SELECT *

FROM access_log

WHERE url = '/index.html' AND client_ip = inet '212.78.10.32';

此处查询的IP地址由部分索引覆盖。以下查询无法使用部分索引,因为它使用从索引中排除的 IP 地址:

SELECT *

FROM access_log

WHERE url = '/index.html' AND client_ip = inet '192.168.100.23';

可以看到部分索引查询要求公值能被预知,因此部分索引最适合于数据分布不会改变的情况。这样的索引也可以偶尔被重建来适应新的数据分布,但是这会增加维护负担。

评论

登录后才可以发表评论
用户头像
levvel发表于 6个月前
进来看看,应该有收获
崔哥发表于 6个月前
乔木生云气。访中兴、英雄陈迹,暗追前事。战舰东风慳借便,梦断神州故里。旋小筑、吴宫闲地。华表月明归夜鹤,叹当时、花竹今如此。枝上露,溅清泪。遨头小簇行春队。步苍苔、寻幽别坞,问梅开未。重唱梅边新度曲,催发寒梢冻蕊。此心与、东君同意。后不如今今非昔,两无言、相对沧浪水。怀此恨,寄残醉。
崔哥发表于 4个月前
画堂红袖倚清酣,华发不胜簪。几回晚直金銮殿,东风软、花里停骖。书诏许传宫烛,轻罗初试朝衫。御沟冰泮水挼蓝。飞燕语呢喃。重重帘幕寒犹在,凭谁寄、银字泥缄。报道先生归也,杏花春雨江南。
曾浩轩发表于 2个月前
加油
用户头像
levvel发表于 1个月前
评论是对发帖人的一种尊重