为整个数据库创建常量字符串

2024-01-09

我对 SQL 还很陌生,所以我有一些小问题需要解决。 我正在 Acqua Data Studio 中运行 Postgres 数据库,其中一些查询遵循相同的模型。
这些查询中的一些变量是相同的,但将来可能会发生变化......

考虑一个优化的数据库,更改常量的值比输入 20 多个查询并在所有查询中更改相同的方面要更快。

Example:

SELECT *
FROM Table AS Default_Configs      
    LEFT JOIN Table AS Test_Configs
        ON Default_Configs.Column1 = 'BLABLABLA'

想象“BLABLABLA”可能是“XXX”,我如何才能使“BLABLABLA”成为按照此模式创建的每个视图的常量?


创建一个充当“全局常量”的小函数:

CREATE OR REPLACE FUNCTION f_my_constant()
  RETURNS text AS
$$SELECT text 'XXX'$$ LANGUAGE sql IMMUTABLE PARALLEL SAFE; -- see below

并使用该函数而不是'BLABLABLA'在您的查询中。

确保正确声明数据类型并进行功能IMMUTABLE https://www.postgresql.org/docs/current/sql-createfunction.html(因为确实如此)为了更好地处理大查询。

在 Postgres 9.6 或更高版本中添加PARALLEL SAFE,因此它不会阻止并行查询计划。该设置在旧版本中无效。

要更改常量,请通过运行更新的函数来替换该函数CREATE OR REPLACE FUNCTION陈述。自动使用它使查询计划失效,因此重新计划查询。并发使用应该是安全的。更改后开始的交易使用新功能。但涉及该函数的索引必须手动重建。


或者(特别是在 9.2 或更高版本中),您可以设置定制选项 https://www.postgresql.org/docs/current/runtime-config-custom.html作为整个集群、给定数据库、给定角色等的“全局常量”,并使用以下命令检索值:

current_setting('constant.blabla')

一个限制:该值始终是text并且可能必须转换为目标类型。

Related:

  • PostgreSQL 中的用户定义变量 https://stackoverflow.com/questions/14261035/user-defined-variables-in-postgresql/14261927#14261927

设置方法有多种:

  • search_path 如何影响标识符解析和“当前模式” https://stackoverflow.com/questions/9067335/how-does-the-search-path-influence-identifier-resolution-and-the-current-schema/9067777#9067777
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为整个数据库创建常量字符串 的相关文章

  • 处理多种权限类型的最佳方法是什么?

    我经常遇到以下场景 我需要提供许多不同类型的权限 我主要使用 ASP NET VB NET 和 SQL Server 2000 Scenario 我想提供一个可以处理不同参数的动态权限系统 假设我想授予某个部门或特定人员访问应用程序的权限
  • 需要在SQL Server 2012中自动递增字符串

    考虑 SQL Server 2012 中的表 789 0000000 上面的数字在 SQL Server 2012 中将被视为字符串 但每当我更新记录时 我都需要增加到 1 例如 当我更新记录 1 时 它应该增加到789 0000001 当
  • 如何在 BigQuery/SQL 中将行转置为包含大量数据的列?

    我在将 BigQuery 中的大量数据表 15 亿行 从行转置为列时遇到问题 我可以弄清楚如何在硬编码时使用少量数据来完成此操作 但是对于如此大量的数据 该表的快照如下所示 CustomerID Feature Value 1 A123 3
  • 子查询在多项选择时返回超过 1 个值的 SQL 错误

    我想要一个临时表 它将使用 select 语句插入值 但每次我运行查询时 总是出现错误 子查询返回超过 1 个值 当查询跟随 gt 或子查询用作表达式时 不允许这样做 该语句已终止 0 行受影响 这很奇怪 因为代码中似乎没有错误 但如果有的
  • 当日期有时间时,访问查询将不起作用

    我有一个查询 select from tblClient where IntakeDate 5 31 2011 我确实知道有 8 条记录有该日期 但此查询没有提取任何具有该日期的记录 这 8 条记录有时间和 短日期 例如 5 31 2011
  • 基于两个数据库表之间的数据比较创建oracle视图

    我有下表 我想创建视图以便descr O 以及对于常见的id isin两个表中的字段值 检查ratio字段并只取其中的行ratio字段值低 for descr O 如果 id isin 存在于一个表中但不存在于另一个表中 则获取这些行 双向
  • 分区表查询仍然扫描所有分区

    我有一个包含超过十亿条记录的表 为了提高性能 我将其分区为30个分区 最常见的查询有 id 在他们的 where 子句中 所以我决定对表进行分区id column 基本上 分区是这样创建的 CREATE TABLE foo 0 CHECK
  • 如何在 Elixir 的 Ecto 查询中使用“case-when”?

    我有一个 SQL 查询 例如 SELECT SUM CASE WHEN
  • PostgreSQL 中的仅索引扫描和位图索引扫描有什么区别?

    在我的查询中 我只想调用具有精确 where 条件的数据 这些where条件是在index html中创建的 Bu 解释显示了位索引扫描 我不明白为什么 我的查询如下所示 Select r spend r date from metadat
  • 如何返回调用不同数据库中的存储过程的远程数据库名称?

    我在一个 SQL Server 2008 R2 上有许多不同的数据库 为了便于论证 我们将它们称为 DB A DB B 和 DB C 我被要求开发一个将存在于 DB A 上的存储过程 该存储过程将用于删除和创建索引 并在 DB A 的表中存
  • 如何在Redshift中进行分层随机样本?

    我需要对从不同类别购买商品的客户进行随机抽样 有8个类别 订单分布在其中 如果我想对已购买的客户进行随机抽样 但保持每个类别的订单比例相同 我将如何在我的 sql 代码中进行设置 下面的表格强调了这一点 它不包括客户数据 我希望我的客户列表
  • 执行Insert命令并返回Sql中插入的Id

    我正在 MVC 4 中使用 C 将一些值插入到 SQL 表中 实际上 我想插入值并返回最后插入记录的 ID 我使用以下代码 public class MemberBasicData public int Id get set public
  • 第一次如何配置postgresql?

    我刚刚安装了 postgresql 并在安装过程中指定了密码 x 当我尝试做的时候createdb并指定我收到消息的任何密码 createdb 无法连接到数据库 postgres 致命 用户密码身份验证失败 同样适用于createuser
  • 在 ms-sql 中查找最近的位置

    我将这些参数发送给我的脚本 纬度 41 0186 经度 28 964701 它是示例 我想找到最近的位置的名称 这个怎么做 查询必须更改代码的位置 sql查询 SELECT Name FROM Location WHERE Latitude
  • 连接到 SQL Server 数据库 C#-WinForms

    我正在制作一个桌面应用程序 我希望用户必须登录才能充分使用该程序 我已经在 www winhost com 我的网站的托管位置 上创建了一个数据库 但现在我不知道该怎么办 我一直在使用 google 和 msdn 我想知道如何以编程方式将新
  • 在 apex 中根据 2 种不同类型的用户进行自定义身份验证

    我有一种身份验证方案 目前仅验证用户是否在一个表中 即雇主表中 现在我希望这个身份验证方案来验证用户是雇主还是雇员 并且根据他们是雇主还是雇员 它应该将他们重定向到不同的页面 首先 我如何在身份验证脚本中包含第二个表 我最大的问题是 当员工
  • HQL:从 Eager 表中获取连接集合

    我有四张桌子 RootNode Will return multiple root nodes SubNode Will return one sub node per root node SubNodeChildren1 Will ret
  • CS0246 找不到类型或命名空间名称“ErrorViewModel”(您是否缺少 using 指令或程序集引用?)

    我收到 CS0246 错误代码 我正在做一个 MVC net core 项目 我正在将 Razor 合并到我的 C 代码中 我在进行构建时收到此错误 我在最后一行收到错误 有人能帮我解决这个问题吗 global Microsoft AspN
  • 如何使 Postgres Copy 忽略大 txt 文件的第一行

    我有一个相当大的 txt 文件 9gb 我想将此 txt 文件加载到 postgres 中 第一行是标题 后面是所有数据 如果我直接 postgres COPY 数据 标头将导致数据类型与我的 postgres 表不匹配的错误 因此我需要以
  • Sails.js + Postgres:交易问题

    我试图使用 Postgres 作为数据库在 Sails 0 10 5 中实现事务 但操作最终没有提交 或回滚 这是我作为测试写下的一个简单的事务场景 使用 async js testTransaction function uri var

随机推荐

  • 名为“DefaultApi”的路由已在路由集合中

    这个问题可能看起来重复 但这略有不同 在所有其他问题中 我注意到他们注册了多条路线 但就我而言 我只有一条路线 我正在创建 asp net webapi framework 4 5 并且在 RegisterRoutes 方法中只有一条路由
  • 在本地找不到元数据

    在本地机器上 我安装了一个带有 Maven 存储库的 Artifactory 并且我的项目有一个非常简单的 pom 文件 它指向它
  • 在安全的 Android 锁屏中使用 FLAG_SHOW_WHEN_LOCKED 和 disableKeyguard()

    上下文 最近 我一直在寻找可靠的方法来控制安全的 Android Keyguard 主要是显示自定义锁屏 我知道谷歌已经声明自定义锁屏不受该平台的正式支持 并且应该预料到事情会被破坏 但是 利用现有的 API 我相信一定有办法做到这一点 我
  • Linux 下 C 语言的公钥实现

    我正在尝试使用公钥加密来签名并稍后验证文件 该文件是一个简单的纯文本文件 其中包含用于创作目的的用户信息 我尝试了不同的站点来实现公钥加密算法的 C 实现 但我没有找到任何东西 许多网站都指出使用证书 x 509 等 但这远远超出了我的需要
  • 如何使用带有变量表名称和条件的立即执行

    我想创建一个 PL SQL 函数 该函数传递一个表名和一个条件 并返回该表上满足条件的行数 我创建了这个函数 CREATE OR REPLACE FUNCTION CHECK EXISTS TABLE NAME VARCHAR2 CONDI
  • 如何删除除最后五个之外的所有 Git 提交

    我有一个非常大的 Git 存储库 其中仅包含经常更改的二进制文件 当然 Git 存储库是much比其中的实际文件大 我并不真正关心旧的历史记录 我只需要一些较新的历史记录就能够恢复一些错误的更改 假设我想删除除最后五个之外的所有提交 当然
  • Dockerized Node js 应用程序无法启动

    在对我的演示 Express js 应用程序进行 Docker 化并启动容器后 由于以下原因我无法访问该服务 Connection Timeout dockerized 之前的 for 项目的 URL 产生了 Hello world 在浏览
  • 通过相对路径查找外部测试文件进行单元测试 c++ cmake guest

    访问 C 项目单元测试的外部测试文件的正确方法是什么 我正在使用 CMake 和 Gtest 这是目录结构的示例 Project src test unit tests here test data data file here Thank
  • 从ortools获取SAT解决方案列表

    我正在尝试找出如何从以下位置获取可能解决方案的完整列表ortools sat python cp model 我知道我可以打印它们 如下例所示 但我不清楚如何获取这些值 例如作为嵌套列表或字典列表 我尝试通过修改来编写自己的回调类VarAr
  • “创建数据库权限被拒绝”错误

    我在安装了 Windows XP 操作系统的系统上安装了 SQL SERVER 2008 R2 每当我尝试创建新数据库时 它都会显示错误 CREATE DATABASE PERMISSION DENIED IN DATABASE maste
  • echo 在 bash 脚本中输出 -e 参数。我怎样才能防止这种情况发生?

    我读过关于 echo 的手册页 它告诉我 e 参数将允许转义字符 例如换行符的转义 n 具有其特殊含义 当我输入命令时 echo e foo nbar 进入交互式 bash shell 我得到了预期的输出 foo bar 但是当我使用相同的
  • Android css 字体大小 vw vh 响应式替代方案

    安卓上有替代方案吗 我知道我可以为每个屏幕密度和尺寸创建样式文件并在那里更改字体大小 但是提供单一相对 自动可缩放值 就像在 CSS 中那样 会很棒 我很惊讶 Android 没有它 并且 svg 可绘制对象仅在最新的 api 中支持 谢谢
  • 动态创建字段的 Jquery 验证

    我有基本的 javascript 代码来生成输入文本区域 如下所示 btnAdd click function e var itemIndex container input iHidden length e preventDefault
  • 使用不同结合性和相同优先级的相邻运算符消除表达式的歧义

    假设我有一个如下表达式 其中 and 是具有相同优先级但不同结合性的二元运算符 x y z Would y属于 or 并基于什么标准 根据 Edsgar Dijkstra 的调车场算法 http en wikipedia org wiki
  • PHPMailer 发生致命错误

    我正在尝试使用 PHPMailer 通过 gmail SMTP 服务器发送邮件 但出现致命错误 并且找不到任何解决方案 我的 php 文件
  • C++/CLI:为什么我不能通过引用传递字符串?

    为什么 Microsoft 的 C CLI 不允许我通过引用传递字符串 我收到以下错误 C3699 无法在类型 System String 上使用此间接寻址 首先 NET 实际上有两种 Microsoft 特定的 C 方言 较旧的 托管 C
  • ORMLite - 查询外域

    使用 Android 版 ORMLite 我需要构建一个按订单 ID 或客户名称返回订单的查询 请考虑以下类声明 DatabaseTable tableName order public class Order DatabaseField
  • Java:如何将控件而不是其数据拖放到新位置?

    在Java中 当拖动的项目是源控件本身时 执行拖放的最佳方法是什么 我知道控件也只不过是数据 但差异确实会影响 UI 我正在创建一个纸牌风格的游戏 其中有从 JLabel 派生的 Card 类的卡片对象 我想将该卡拖放到另一个位置 方法是将
  • 从 kubernetes 集群中完全卸载 istio(所有组件)

    我使用以下命令安装了 istio VERSION 1 0 5 GCP gcloud K8S kubectl K8S apply f istio VERSION install kubernetes helm istio templates
  • 为整个数据库创建常量字符串

    我对 SQL 还很陌生 所以我有一些小问题需要解决 我正在 Acqua Data Studio 中运行 Postgres 数据库 其中一些查询遵循相同的模型 这些查询中的一些变量是相同的 但将来可能会发生变化 考虑一个优化的数据库 更改常量