如果记录不存在,Postgresql 选择命令会变慢
Posted
技术标签:
【中文标题】如果记录不存在,Postgresql 选择命令会变慢【英文标题】:Postgresql select command slow if record doesn't exist 【发布时间】:2013-07-06 13:43:05 【问题描述】:我有以下选择命令。这些表有大约 200 万条记录。我要找的记录不存在。但是选择查询很慢。我该如何加快速度?其他人也遇到过这个问题,see here,但这种情况下的解决方案并不适用。
a1_value = 'AA'
a2_value = "1"
cur.execute("SELECT pk, a1, a2 FROM db_name WHERE a1 = %s AND a2 = %s LIMIT 1", (a1_value, a2_value))
【问题讨论】:
在 a1 和 a2 上放置索引 对不起,我是新手。你什么意思?能给个代码示例吗? 我没有使用过 postgresql,但您必须在 where 子句中使用的列上创建索引。这将加快速度显着 documenation 请务必查看上方链接底部的示例 【参考方案1】:答案是在 a1 和 a2 上放置索引。例如: cur.execute("创建索引 index_title ON db_name (a1, a2)") cur.execute("SELECT pk, a1, a2 FROM db_name WHERE a1 = %s AND a2 = %s LIMIT 1", (a1_value, a2_value))
【讨论】:
以上是关于如果记录不存在,Postgresql 选择命令会变慢的主要内容,如果未能解决你的问题,请参考以下文章
Postgresql之VACUUM和VACUUM FULL对比
t-sql 如果记录存在则选择一列,如果不存在则选择不同的列