【发布时间】:2012-07-19 19:58:18
【问题描述】:
我有一个由图表组成的数据库。我需要访问的表如下所示:
Sno Source Dest
1 'jack' 'bob'
2 'jack' 'Jill'
3 'bob' 'Jim'
这里Sno 是主键。 Source 和 Destination 是 2 个非唯一数字,代表我图中节点之间的一条边。我的Source 和Dest 也可能是字符串,不一定是数字数据类型。我的数据库中有大约 500 万个条目,我使用 Postgresql 和 Psycopg2 for python 构建了它。
查询主键非常简单快捷。但是,我需要经常查询此数据库以获取特定源连接到的所有dest。现在我通过调用查询来实现这一点:
SELECT * FROM name_table WHERE Source = 'jack'
事实证明这非常低效(每个查询最多 2 秒)并且我无法将其设为主键,因为它不是唯一的。有什么方法可以根据这些重复的值建立索引并快速查询?
【问题讨论】:
-
您在
Source字段上设置了索引?如此处所述postgresql.org/docs/9.1/static/sql-createindex.html -
要设置索引,您需要将其设为主键,对吗?它不需要唯一的密钥吗?如果不是,我该如何设置这个索引?
-
您应该阅读我发布的文档。这会告诉您关于使用 PostgreSQL 进行索引的一切。
标签: python sql database postgresql