我有一个关于查询的问题:
SET client_min_messages TO warning;SET TIME ZONE INTERVAL '+00:00' HOUR TO MINUTE;
当我在postgres中执行查询:select query from pg_stat_activity
时,经常会在执行我定义的查询之前看到这个查询。我想禁用这个查询。我的列具有带有时区的时间戳,但我的默认时区是UTC。我该怎么做才能删除它?这会影响性能吗?
我有一个关于查询的问题:
SET client_min_messages TO warning;SET TIME ZONE INTERVAL '+00:00' HOUR TO MINUTE;
当我在postgres中执行查询:select query from pg_stat_activity
时,经常会在执行我定义的查询之前看到这个查询。我想禁用这个查询。我的列具有带有时区的时间戳,但我的默认时区是UTC。我该怎么做才能删除它?这会影响性能吗?
SET
用于设置运行时参数,而不是查询数据库。我甚至不能使用 SET
运行 EXPLAIN ANALYZE
;根据程序的复杂性,预计时间应该类似于最短的查询。我怀疑它对性能产生了有意义的影响,但当然,会传递和解析一些字节。
这些命令来自 Sequelize 的 connection-manager.js。它们在初始化连接时生成,并且通过此方式:
if (this.sequelize.options.clientMinMessages !== false) {
query += `SET client_min_messages TO ${this.sequelize.options.clientMinMessages};`;
}
if (!this.sequelize.config.keepDefaultTimezone) {
const isZone = !!moment.tz.zone(this.sequelize.options.timezone);
if (isZone) {
query += `SET TIME ZONE '${this.sequelize.options.timezone}';`;
} else {
query += `SET TIME ZONE INTERVAL '${this.sequelize.options.timezone}' HOUR TO MINUTE;`;
}
}
clientMinMessages: false, keepDefaultTimezone: true
调用new Sequelize()
(这里是clientMinMessages; keepDefaultTimezone文档较少)。client_min_messages
设置为WARNING
,则postgres可能会默认为稍低的通知阈值NOTICE
并向Sequelize发送一些额外的消息。是否值得追求这些微调取决于您的系统。