AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题

问题[array](dba)

Martin Hope
Henrik N
Asked: 2022-03-18 07:44:52 +0800 CST

是否有任何性能原因更喜欢 idx() (intarray) 而不是 array_position()?

  • 1

是否有性能原因(或其他原因)更喜欢idx(来自intarray)在array_position整数列表中查找整数的位置?

我问是因为我们之前使用idx过array_position的被添加到 Postgres 中。如果没有性能损失,最好使用内置函数而不是依赖 intarray 扩展。

非常非正式的基准测试表明它具有可比性。PostgreSQL 版本是 13.5。

postgresql array
  • 1 个回答
  • 86 Views
Martin Hope
Erwin Zangwill
Asked: 2021-12-18 08:00:32 +0800 CST

psql 函数:使用 array_append 将一维数组附加到二维数组

  • 0

我尝试使用 psql 函数中的 array_append 将一维数组附加到二维数组。我在声明部分定义count_values为输出 by out count_values integer[][],作为变量,并尝试使用,但弹出错误。cout_valuecount_value integer[]count_values := array_append(count_values, count_value)function array_append(integer[], integer[]) does not exist

            if ...
            else
                count_value:= array_append(count_value, 0);
            end if;
            index:= index + 1;
        end loop;
        
        count_values:= array_append(count_values, count_value);
    end loop;
...

postgresql array
  • 1 个回答
  • 550 Views
Martin Hope
tinlyx
Asked: 2021-10-13 01:45:56 +0800 CST

TOAST 存储中的 PostgreSQL 阵列是否具有随机访问时间?

  • 1

这个问题与 PostgreSQL TOAST 存储和 GIS.SE 问题有关:是否应该为 PostGIS 禁用 TOAST 压缩?

基本上,我想知道对于数组元素的随机访问是否有恒定时间复杂度(O(1))的保证?

也就是说,要获得arr[n],最坏情况下的步数是需要一个常数(即O(1))还是其他东西(O(log n)等等)?

我问是因为在某些数据形式(如 PostGIS 线或栅格)中,主要数据在逻辑上是一个(坐标)数组。众所周知,一旦数据量超过一定的限制(如 500 个点),此类数据的访问时间可能会非常长。一个可能的原因是这种大小的数据被传输到 TOAST 存储,并且可能会压缩数据(例如使用main存储)。目前尚不清楚 PostgreSQL 如何预测元素的大致位置并仍然提供随机访问时间。

大多数编程语言中数组的访问时间是恒定的(O(1))。这就是使用数组的意义所在。只是出于好奇:

PostgreSQL 数组是否具有恒定的访问时间?(什么时候什么时候不?)

postgresql array
  • 2 个回答
  • 133 Views
Martin Hope
tinlyx
Asked: 2021-06-04 13:46:15 +0800 CST

如何自动对文本数组元素进行大小写?

  • 0

根据关于 ARRAY 构造函数的 PostgreSQL 文档:

默认情况下,数组元素类型是成员表达式的通用类型,使用与 UNION 或 CASE 构造相同的规则确定(参见第 10.5 节)。您可以通过将数组构造函数显式转换为所需类型来覆盖它,例如:

SELECT ARRAY[1,2,22.7]::integer[];
  array
----------
 {1,2,23}
(1 row)

这适用于将元素转换为整数和简单类型:

SELECT ARRAY[ 'name', 1]::text[];
  array   
----------
 {name,1}
(1 row)

但转换似乎不适用于复杂元素,例如数组元素:

SELECT ARRAY[ 'name', 1, ARRAY['world']]::text[];
ERROR:  malformed array literal: "name"
LINE 1: SELECT ARRAY[ 'name', 1, ARRAY['world']]::text[];
                      ^
DETAIL:  Array value must start with "{" or dimension information.

我的问题是:

有没有办法让自动转换工作text[]?

(即无需编写即可进行上述转换SELECT ARRAY[ 'name'::text, 1::text, ARRAY['world']::text];)

postgresql array
  • 1 个回答
  • 124 Views
Martin Hope
Peeyush Kushwaha
Asked: 2021-04-03 05:00:07 +0800 CST

整个表中数组元素的唯一性约束

  • 0

在下表中:

CREATE TABLE user (
    email           varchar[],
    ...
);

我想确保没有两个用户拥有相同的电子邮件。我不确定UNIQUE约束如何与数组数据类型交互。确保唯一性的适当方法是什么?或者这是一种反模式,我应该只声明另一个emails表吗?

postgresql array
  • 1 个回答
  • 346 Views
Martin Hope
mich
Asked: 2021-02-05 10:55:42 +0800 CST

创建新列时有条件地在数组中插入一个值

  • 0

我在 jsonb col 中有一些数据需要清理并插入到另一个文本数组列中。

我有的:

[
  {
    "v": "birthday"
  },
  {
    "v": "reference"
  }
]

我想要什么(_text):

{birthday, reference}

我的查询:

select array[col -> 0 ->> 'v', col-> 1 ->> 'v'] from src

给出了如上的预期结果。

但是,当值为 null 时,我希望不插入该值,即没有 NULL 值也不为空:

[
  {
    "v": "birthday"
  }
]

应该导致

{birthday}

并不是

{birthday, [NULL]} -- NULL value
{birthday,} -- Empty string with coalesce

在创建数组时,如何根据元素的值有条件地将元素插入到数组中?

postgresql array
  • 1 个回答
  • 140 Views
Martin Hope
nobsvalo
Asked: 2020-09-01 03:39:30 +0800 CST

如何为mysql查询编写正确的数组字符串参数?

  • 1

我试图建立一个正确的字符串作为参数传递给一个简单的查询。

返回记录的正确查询:

SELECT id_s FROM group_of_id_s
WHERE date IN ('2020-08-01','2020-08-01','2020-08-02','2020-08-03','2020-08-04');

...但如果我通过这个 (''2020-08-01','2020-08-01','2020-08-02','2020-08-03','2020-08-04'' ) 作为参数它不起作用。

我也试图通过这个('2020-08-01,2020-08-01,2020-08-02,2020-08-03,2020-08-04')

...但它也不起作用。

我的想法是通过一个过程把这个字符串作为参数。或许是这样的:

IN parameter TEXT

BEGIN

SET @c = CONCAT('SELECT id_s FROM group_of_id_s
WHERE date IN (', '''' , parameter, '''', ')');

PREPARE stmt from @c;
EXECUTE stmt;

END

任何参考或有用的建议将不胜感激。

编辑:基于来自@nbk 的非常有用的示例并在将其与数组进行比较之前更改日期格式,我设法提出了一个有效的查询,就像一个魅力。您可以在下面看到它的所有荣耀。;O) 来自@nbk 的响应因此被视为解决方案。非常感谢@nbk。

SELECT id_s FROM group_of_id_s
WHERE find_in_set(DATE_FORMAT(`date`, '%Y-%m-%d'), parameter) > 0;
mysql array
  • 1 个回答
  • 785 Views
Martin Hope
Alec Sanger
Asked: 2020-06-20 07:58:51 +0800 CST

Postgres 查询从另一个数组中选择具有至少一个匹配数组值的所有记录

  • 0

粗表结构:

id                      uuid
fields                  jsonb
created_at              timestamptz
related_content_ids     _uuid
updated_at              timestamptz

我正在尝试编写一个查询,该查询将查找此表中的所有记录,这些记录至少具有related_content_ids列中指定数组的一个值。

像这样的东西适用于匹配数组中的所有值,但我只需要至少一个来匹配:

SELECT * FROM content WHERE related_content_ids @> '{fbaa1235-1069-496f-9a54-e91e13aadae8,65a109eb-ee4b-4a23-9f91-6980b5bb9340}'
postgresql array
  • 1 个回答
  • 480 Views
Martin Hope
PalaeoSam
Asked: 2020-05-06 00:58:50 +0800 CST

MongoDB:是否可以搜索数组大小不匹配的两个字段?

  • 0

我有一个看起来像下面这样的集合(我已经简化了很多)。我需要查询没有与customersInvited 相同数量的customersAccepted 条目的任何记录。

/* 1 */
{
    "_id" : ObjectId("5d7b8ab0f1e55a2e4b6ccfa2"),
    "title" : "Service AT19",
    "customersInvited" : [ 
        429409, 
        429410, 
        900
    ],
    "customersAccepted" : [ 
        429409, 
        429410, 
        900
    ],
    "groupId" : null,
    "deleted" : true,
    "deletedDate" : ISODate("2019-10-12T05:59:08.135Z"),
}

$size 运算符可以做到这一点吗?在寻找固定数字时我很熟悉它,所以我的计划 B 将添加两个单独的字段,分别称为 numAccepted 和 numInvited,然后在修改记录时更新它并执行以下操作:

db.collection.find( { "numInvited": { $ne: "numAccepted" } } );

如果可以直接比较数组大小,我真的宁愿不维护我不需要的其他字段。您对此提供的任何建议将不胜感激。

mongodb array
  • 1 个回答
  • 677 Views
Martin Hope
Ali
Asked: 2020-03-14 13:18:13 +0800 CST

Powershell dbatools 结合多个 Get-dbaxxx 命令的结果生成报告

  • 0

我是 powershell 和 dbatools 的新手。这是一个很棒的工具,但是当我尝试将几个不同命令的结果组合成一个要导出到 csv 的数组时,它并没有提供预期的结果。它只打印第一个命令的输出。有人可以帮我加入所有三个变量的结果吗?我要做的是编写一个脚本来自动生成我们的 SQL Server 库存和容量评估报告。

到目前为止,这是我的代码:

$Servers = Get-Content 'C:\Users\temp\ServerList.txt'

$reportData = @()

foreach ($Server in $Servers) {

  if (Test-Connection -ComputerName $Server -Count 1 -ErrorAction 'SilentlyContinue') {

    $OSInfo=Get-DbaOperatingSystem -ComputerName MyServer| Select ComputerName, OSVersion, Version, Architecture
    $DiskSPace=Get-DbaDiskSpace -ComputerName MyServer| Select ComputerName, Label, Name, Capacity, Free
    $SQLInstanceInfo=Connect-DbaInstance -SqlInstance MyServer | Select DbaInstanceName, Edition, NetPort, IsClustered, Processors, ProductLevel, ServiceName, 


    $reportData +=$OSInfo
    $reportData +=$DiskSPace
    $reportData +=$SQLInstanceInfo

  }

  else {

    write-host $Server "not connected"
  }
}

Write-Output $reportData | Format-Table
powershell array
  • 1 个回答
  • 361 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve