我有一个由图表组成的数据库。我需要访问的表格如下所示:
Sno Source Dest
1 'jack' 'bob'
2 'jack' 'Jill'
3 'bob' 'Jim'
此处Sno
是主键。源和目标是2个非唯一数字,表示我的图中节点之间的边。我的Source
和Dest
也可能是字符串,不一定是数字数据类型。我的数据库中有大约500万个条目,我使用Postgresql和Psycopg2为python构建它。
查询主键非常简单快捷。但是,我需要经常查询此数据库以查找特定源连接的所有dest
。现在我通过调用查询来实现这个目的:
SELECT * FROM name_table WHERE Source = 'jack'
事实证明这是非常低效的(每个查询最多2秒)并且我无法将其作为主键,因为它不是唯一的。有什么方法可以根据这些重复值制作索引并快速查询吗?
答案 0 :(得分:4)
这可以让您的查询更快。
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建立索引的更多信息。
<强>更新强>
如果您的表格是 small ,那么这肯定会有所帮助。但是,如果您的数据集在增长,您应该考虑更改架构,以获得可以更有效地编制索引的唯一值。