Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 高效查询图结构_Python_Sql_Database_Postgresql - Fatal编程技术网

Python 高效查询图结构

Python 高效查询图结构,python,sql,database,postgresql,Python,Sql,Database,Postgresql,我有一个由图表组成的数据库。我需要访问的表如下所示: Sno Source Dest 1 'jack' 'bob' 2 'jack' 'Jill' 3 'bob' 'Jim' 此处Sno是主键。源和目标是两个非唯一的数字,它们表示图形中节点之间的边。MySource和Dest也可以是字符串,不一定是数字数据类型。我的数据库中有大约500万个条目,我使用Postgresql和python的Psycopg2构建了它 查询主键非常简单和快

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

Sno    Source    Dest
1       'jack'   'bob'
2       'jack'   'Jill'
3       'bob'    'Jim'
此处
Sno
是主键。源和目标是两个非唯一的数字,它们表示图形中节点之间的边。My
Source
Dest
也可以是字符串,不一定是数字数据类型。我的数据库中有大约500万个条目,我使用Postgresql和python的Psycopg2构建了它

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

SELECT * FROM name_table WHERE Source = 'jack'

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

这将使您的查询速度更快

在表名源上创建索引表名源

但是,您可以使用许多选项

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 ]
阅读更多有关PostgreSQL索引的信息

更新


如果你的桌子和你的一样小,这肯定会有帮助。但是,如果你的数据集正在增长,你可能应该考虑一个模式改变有唯一的值,可以更有效地索引。

< P>这会使查询更快。
在表名源上创建索引表名源

但是,您可以使用许多选项

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 ]
阅读更多有关PostgreSQL索引的信息

更新


如果你的桌子和你的一样小,这肯定会有帮助。但是,如果您的数据集正在增长,您可能应该考虑一个模式更改,以具有更有效的索引值。正如这里所解释的,要设置索引,您需要将其作为主键,对吗?它不需要唯一的密钥吗?如果没有,我如何设置此索引?您应该阅读我发布的文档。这将告诉您有关PostgreSQL索引的所有信息。您是否已在
字段上设置了索引?正如这里所解释的,要设置索引,您需要将其作为主键,对吗?它不需要唯一的密钥吗?如果没有,我如何设置此索引?您应该阅读我发布的文档。这将告诉您有关PostgreSQL索引的所有信息。