我继承了一个充满数据的现有Postgres数据库.大多数数据都有'created_date'列值.在跟踪之前插入了一些早期数据.
有一个Postgres元数据表隐藏在跟踪INSERT
查询完成时的某个地方吗?
UPDATE
无论我是否更改了列中的值,Hibernate都会生成包含所有列的语句,例如:
tx.begin();
Item i = em.find(Item.class, 12345);
i.setA("a-value");
tx.commit();
Run Code Online (Sandbox Code Playgroud)
发表此UPDATE
声明:
update Item set A = $1, B = $2, C = $3, D = $4 where id = $5
Run Code Online (Sandbox Code Playgroud)
因此列B,C,D会更新,而我没有更改它们.
比如,项目经常更新,所有列都被编入索引.问题是:将Hibernate部分优化为这样的事情是否有意义:
tx.begin();
em.createQuery("update Item i set i.a = :a where i.id = :id")
.setParameter("a", "a-value")
.setParameter("id", 12345)
.executeUpdate();
tx.commit();
Run Code Online (Sandbox Code Playgroud)
最让我困惑的是,EXPLAIN
"未经优化"和"优化"查询版本的计划完全相同!
我想在Postgres中运行一个SQL查询,它与你在没有order by子句的情况下运行初始查询所获得的完全相反.
因此,如果您的查询是:
SELECT * FROM users
Run Code Online (Sandbox Code Playgroud)
然后
SELECT * FROM users ORDER BY <something here to make it exactly the reverse of before>
Run Code Online (Sandbox Code Playgroud)
它会这样吗?
ORDER BY Desc
Run Code Online (Sandbox Code Playgroud)