【问题标题】:Unnecessary select Primary Key sequence calls不必要的选择主键序列调用
【发布时间】:2010-10-27 20:28:03
【问题描述】:

我最近使用 Postgresql 在我的 Rails 3 应用程序中使用类似于 this method 的方法从使用整数序列 ID 转换为 UUID 作为主键。因此,我的所有表都没有序列,但 Rails 在创建记录时仍然(我相信是)对选择序列进行不必要的调用。例如:

 PK and serial sequence (1.3ms)   SELECT attr.attname, seq.relname
 FROM pg_class seq,
 pg_attribute attr,
 pg_depend dep,
 pg_namespace name,
 pg_constraint cons
 WHERE seq.oid = dep.objid
 AND seq.relkind = 'S'
 AND attr.attrelid = dep.refobjid
 AND attr.attnum = dep.refobjsubid
 AND attr.attrelid = cons.conrelid
 AND attr.attnum = cons.conkey[1]
 AND cons.contype = 'p'
 AND dep.refobjid = '"posts"'::regclass

我相信这是由函数 pk_and_sequence_for 生成的,我的架构的相关部分是:

t.uuid   "id", :null => false, :primary => true

uuid 类型只是 32 个字符。

谁能启发我用一种优雅的方式来阻止 Rails 进行此查询? (或解释为什么有必要)。谢谢。

【问题讨论】:

    标签: ruby-on-rails postgresql


    【解决方案1】:

    该查询正在检查数据库目录以查看“posts”表的主键是否附加到序列,而不是尝试从序列中获取值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-19
      • 1970-01-01
      • 1970-01-01
      • 2020-10-15
      • 2019-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多