我有一个由图形组成的数据库。我需要访问表看起来像这样:高效查询图结构
Sno Source Dest
1 'jack' 'bob'
2 'jack' 'Jill'
3 'bob' 'Jim'
这里Sno
是主键。源和目标是2个非唯一的数字,代表我的图中节点之间的边。我的Source
和Dest
也可能是字符串,不一定是数字数据类型。我的数据库中有大约500万条记录,我使用Postgresql和Psycopg2构建了它。
查询主键非常简单快捷。但是,我需要经常查询这个数据库中的所有dest
特定源连接到。现在,我通过调用查询做到这一点:
SELECT * FROM name_table WHERE Source = 'jack'
这被证明是非常低效的(高达每查询2秒),也没有办法,我可以做这个主键,因为它不是唯一。有什么方法可以根据这些重复值进行索引并快速查询它?
你已经在'Source'字段设置了一个索引?正如这里解释的http://www.postgresql.org/docs/9.1/static/sql-createindex.html – fdomig 2012-07-19 20:00:16
要设置一个索引,你需要把它作为主键的权利?它不需要唯一的密钥吗?如果不是我如何设置这个索引? – Amitash 2012-07-19 20:01:39
您应该阅读我发布的文档。这告诉你*使用PostgreSQL进行索引时的一切*。 – fdomig 2012-07-19 20:03:27