如何查询使用索引的PostgreSQL表?

不安全的信息技术

我正在尝试从snort查看IPS警报,警报已通过barnyard2插入数据库中。https://github.com/firnsy/barnyard2

当我使用时,请SELECT ip_src from iphdr ;从postgresql取回它。

   ip_src   
------------
 2886730039
 2886730039
 1815870597
 1815870597
 3325194354
 3325194354

是否可以安全地假设这些是某种索引号?它显然不是标准的IPv4格式。

创建表时,还将创建索引。

CREATE TABLE iphdr  ( sid     INT4 NOT NULL,
                      cid     INT8 NOT NULL,
                      ip_src      INT8 NOT NULL,
                      ip_dst      INT8 NOT NULL,
                      ip_ver      INT2,
                      ip_hlen     INT2,
                      ip_tos      INT2,
                      ip_len      INT4,
                      ip_id       INT4,
                      ip_flags    INT2,
                      ip_off      INT4,
                      ip_ttl      INT2,
                      ip_proto    INT2 NOT NULL,
                      ip_csum     INT4,
                      PRIMARY KEY (sid,cid));
CREATE INDEX ip_src_idx ON iphdr (ip_src);
CREATE INDEX ip_dst_idx ON iphdr (ip_dst);

如何查询该表并从该索引中获取实际IP地址?

v

一个明显的解决方案是使用适当的数据类型,即Postgresinet数据类型。

CREATE TABLE iphdr  ( sid     INT4 NOT NULL,
                      cid     INT8 NOT NULL,
                      ip_src      inet NOT NULL,
                      ip_dst      inet NOT NULL,

这将允许您按字面意义插入网络地址:

insert into iphdr (ip_src, ip_dst) values ('192.168.0.1','192.168.0.2')

如果您使用此数据类型,则有几个专门的功能可以帮助您使用它们,例如在where子句中。

如果您无法控制传入的数据,这些数据类型仍然可以帮助您以可识别的格式显示值:

SELECT '0.0.0.0'::inet + ip_src as ipsrc,'0.0.0.0'::inet + ip_dst as ipdst,

SQLFiddle演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用Hibernate for PostgreSQL创建索引

如何在PostgreSQL中的外表SELECT MAX(id)查询中使用索引?

我应该如何使用Rails索引和查询联接表?

Postgresql 9.3:如何将交叉表与多个索引一起使用?

如何在Postgresql查询中使用多个“唯一索引推断”

我如何知道查询中是否使用了任何索引?PostgreSQL 11?

从索引表高效查询

如何使用created_at为索引将简单的Postgresql表转换为超表或时标db表

如何使用索引表MariaDB改善慢速查询?

PostgreSQL-如何使用索引进行此类查询

如何使用多列和顺序索引Postgresql查询

为什么Postgresql不对IN查询使用索引?

如何通过索引PostgreSQL优化查询

如何在PostgreSQL中使用查询找出索引名称及其定义

PostgreSQL查询未使用索引

这个postgresql查询如何返回为表?

如何使用查询创建表?

如何索引 MySQL InnoDB 表以使用 select ... where key in ( some values here) 进行查询?

当 HQL 查询使用“OR”条件时,如何强制 Oracle 使用索引然后联合而不是全表扫描?

使用动态查询跨不同表的 Postgresql 查询

PostgreSQL 函数遍历查询,如何返回表

如何在 Postgresql 中索引此查询?

PostgreSQL 查询不使用索引

如何在 Jasper Reports 中使用 postgreSQL 交叉表查询?

使用 gin 索引的 postgresql jsonb 数组查询

使用查询结果更新 postgresql 表

PostgreSQL 使用 JOIN 语句查询多个表

大索引表上的 Postgresql 最大查询性能缓慢

PostgreSQL 查询优化 - 我可以强制在查找表上使用索引吗?