ruby-on-rails - 不必要的选择主键序列调用

标签 ruby-on-rails postgresql

我最近使用类似于 this method 的方法在我的 Rails 3 应用程序中使用 Postgresql 的主键从使用整数序列 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 进行此查询? (或解释为什么有必要)。谢谢。

最佳答案

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

关于ruby-on-rails - 不必要的选择主键序列调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4037401/

相关文章:

PostgreSQL 计算一天中部分时间的平均值

jquery_ujs 问题 : Font Awesome animated spinner works in Chrome but Not Safari

sql - Heroku 在我卸载后提示 sqlite3

ruby-on-rails - 有推荐的 Rails 部署教程书吗?

ruby-on-rails - Rails 4 形式 - 没有将模型隐式转换为字符串

postgresql - pipelinedb 连续 View 不起作用

c# - Asp.Net MVC - 使用 Entity Framework + Npgsql.Entityframework 访问 Postgresql

sql - postgresql: 插入到... (SELECT * ...)

ruby-on-rails - 相同 2 个模型之间的多个 has_many/belongs_to

ruby-on-rails - 如何构建具有不同级别的连接表/模型的数据库