【问题标题】:R: dbplyr: postgres: How to create an index on a tableR:dbplyr:postgres:如何在表上创建索引
【发布时间】:2018-04-09 18:53:46
【问题描述】:

一个用户有一个大表(超过 3 亿行)。 为了加快接下来几个月的查询速度,必须在远程数据库上创建索引。

假设有一个名为 conn 的连接 - 创建索引并使其在与数据库断开连接后持续存在的最佳方法是什么。

例如,

library(DBI)
sql<-'CREATE INDEX idx_pmid ON medcit  (pmid ASC);'
dbExecute(conn,sql)
dbDisconnect(conn)

上面的代码似乎可以工作,但如何才能以某种方式验证索引(确保它确实存在并加快未来的查询)?换句话说 - 用户如何检查索引的存在?另外,我需要以某种方式发出 COMMIT 命令吗?

【问题讨论】:

  • 你说的“已验证”是什么意思?索引的存在和维护可以查看wiki.postgresql.org/wiki/Index_Maintenance
  • 创建一个索引并使其在与数据库断开连接后保持存在 ...为什么不将索引保存在 Postgres 表中 once 应该的一直在设计架构?
  • 为什么要在 R 的应用层而不是 Postgres 的数据库表层创建索引?
  • @Parfait 因为 R 是我的通用脚本语言,可以满足我的所有需求,而单个客户端可以满足我的项目需求。
  • @userJT 你找到解决办法了吗?

标签: r postgresql dbplyr


【解决方案1】:

在表上创建索引:

dbGetQuery(conn, "CREATE INDEX index_name ON public.db_name USING btree (variable_name)")

【讨论】:

    猜你喜欢
    • 2013-10-24
    • 2013-11-27
    • 1970-01-01
    • 2013-06-02
    • 1970-01-01
    • 2015-08-14
    • 1970-01-01
    相关资源
    最近更新 更多