我的 Postgres 9.5 有一个movimientos
包含以下数据的表:
| id | concepto | movimiento | numero | orden |
| 1 | AJUSTE 1 | 2542 | 0 | 2 |
| 2 | APERTURA | 12541 | 0 | 1 |
| 3 | AJUSTE 2 | 2642 | 0 | 2 |
| 4 | CIERRE | 22642 | 0 | 3 |
Run Code Online (Sandbox Code Playgroud)
我需要根据orden
字段对记录进行编号并将这些数字保留在numero
字段中,因为我需要这些数据numero
在报告中进行排序和搜索。例子:
| id | concepto | movimiento | numero | orden …
Run Code Online (Sandbox Code Playgroud) postgresql performance window-functions update query-performance
我有一个基于日期字段和数字字段的订单查询 Postgres 中的表,该表有 1000000 条记录
表的数据类型为:
fcv_id = serial
fcv_fecha_comprobante = timestamp without time zone
fcv_numero_comprobante = varchar(60)
Run Code Online (Sandbox Code Playgroud)
查询是:
SELECT fcv_id, fcv_fecha_comprobante FROM factura_venta
ORDER BY fcv_fecha_comprobante, fcv_numero_comprobante
Run Code Online (Sandbox Code Playgroud)
这个查询大约需要 5 秒,但如果我取出“order by”,查询只需要 0.499 秒
我遇到的问题是我需要在尽可能短的时间内运行这个查询,所以我在谷歌上搜索我可以做什么并使用以下查询创建一个复合索引
CREATE INDEX factura_venta_orden ON factura_venta
USING btree (fcv_fecha_comprobante ASC NULLS LAST
, fcv_numero_comprobante ASC NULLS LAST);
ALTER TABLE factura_venta CLUSTER ON factura_venta_orden;
Run Code Online (Sandbox Code Playgroud)
但是查询花费的时间相同甚至更多。
我使用的是 Postgres 9.0.13,这里是 73436 行的 EXPLAIN
Sort (cost=11714.03..11897.62 rows=73436 width=27) (actual time=1260.759..1579.853 rows=73436 loops=1)
Sort Key: fcv_fecha_comprobante, fcv_numero_comprobante
Sort Method: external merge …
Run Code Online (Sandbox Code Playgroud) 我在 postgres 中有一个包含 147 个表的数据库;这些表包含由具有系统大部分逻辑的函数生成的数据,例如如何构建会计分录。
这些函数由java中的应用程序调用,该应用程序在代码中几乎没有业务逻辑。
此数据库结构用于不同的客户,其中一些功能对每个客户进行了小的调整,并在功能体中进行了注释。
大多数逻辑都在数据库中的这种方法是否正确?
如果您更新数据库中的一个函数并且我们必须将其传递给彼此,我们如何轻松区分哪个函数发生了更改?不要通过错误删除或替换客户端数据库中的更改?