高效查询图结构

2024-04-26 00:25:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个由图表组成的数据库。我需要访问的表如下所示:

Sno    Source    Dest
1       'jack'   'bob'
2       'jack'   'Jill'
3       'bob'    'Jim'

这里Sno是主键。源和目标是两个非唯一的数字,表示图中节点之间的边。我的SourceDest也可能是字符串,不一定是数字数据类型。我的数据库中有大约500万个条目,我使用Postgresql和psycopg2forpython构建了它。你知道吗

查询主键非常简单快捷。但是,我需要经常查询这个数据库,查找特定源所连接到的所有dest。现在我通过调用查询来实现这一点:

SELECT * FROM name_table WHERE Source = 'jack'

结果证明这是非常低效的(每个查询最多2秒),并且我无法将其作为主键,因为它不是唯一的。有没有什么方法可以根据这些重复的值创建索引并快速查询它?你知道吗


Tags: 字符串数据库source目标节点图表数字dest
1条回答
网友
1楼 · 发布于 2024-04-26 00:25:40

这将使您的查询更快。你知道吗

CREATE INDEX table_name_index_source ON table_name Source;

不过,有很多选择,你可以使用

PostgreSQL文档

CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ name ] ON table [ USING method ]
    ( { column | ( expression ) } [ COLLATE collation ] [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] )
    [ WITH ( storage_parameter = value [, ... ] ) ]
    [ TABLESPACE tablespace ]
    [ WHERE predicate ]

在他们的Documentation中阅读更多关于PostgreSQL索引的信息。你知道吗

更新

如果你的桌子和你的一样小,这肯定会有帮助。但是,如果您的数据集正在增长,您可能应该考虑对模式进行更改,使其具有唯一的值,从而可以更有效地编制索引。你知道吗

相关问题 更多 >

    热门问题