小编Vér*_*ace的帖子

比较 4 个或更多列的值

我有一张像:

ID   A0  A1  A2 A3 A4
14   A   B   A  C  A
15   A   A   A  A  A
Run Code Online (Sandbox Code Playgroud)

我需要比较所有 5 列并检查它们是否具有相同的值并检索唯一具有所有相同值的列......在这种情况下 ID 为 15 的列。有没有办法在 T-SQL 中实现这一点?

sql-server t-sql

7
推荐指数
3
解决办法
2万
查看次数

数据库设计 - 人员和组织

我们正在构建的软件有“客户”。客户可以是个人或组织。

我真的很想为此创建一个最佳模式。

我有这些考虑。

  1. 一个人可以有一个或多个联系人(例如电话、电子邮件)
  2. 一个人可以有一个或多个地址
  3. 一个组织可以有一个或多个联系人(例如电话、电子邮件)
  4. 一个组织可以有一个或多个地址
  5. 一个组织可以有一个或多个与之相关的人员。

我希望应用程序能够适当地扩展,因此架构应该适合此选择。

我正在尝试实现以下目标。

SELECT * FROM Customers + a few joins.

1. Person | NULL | John Doe | Primary Organisation Contact | Primary Address

2. Organisation | Acme Ltd | Jane Doe | Primary Organisation Contact | Primary Address
Run Code Online (Sandbox Code Playgroud)

我应该如何创建一个最佳模式来关联上述内容?

我附上了一个粗略的 Visual Schema 层次结构 - 我知道我离得很远!!我确定我犯了错误。

http://snag.gy/yshxE.jpg

是否有可能根据是个人还是组织来获得一组已婚结果?

将个人和联系人/地址加入客户很简单,但您如何加入组织的主要联系人/地址?

有没有更简单的方法来实现我的蜘蛛图外观架构。??

mysql postgresql database-design

6
推荐指数
3
解决办法
1万
查看次数

超过 9900 万条记录带有地理列和空间索引 - 查询非常非常慢!

我使用 SQL Server 已经很长时间了,但直到最近才遇到处理空间数据的需要。我进入了一个大量使用它的环境,我的第一个真正挑战是让查询更快地运行(并停止超时),以针对具有地理数据类型列(和索引)的表。

我们使用一个查询来标识该表中在多边形和多多边形中找到的所有地理点。这个表中有超过 9900 万条记录,我不知道如何调整这个野兽的性能!我已经确定聚集索引比需要的大一点,并打算添加一个标识列来做两件事:1) 减小聚集索引的大小。2) 消除插入的页面拆分。虽然我希望从这样做中得到一些缓解,但我并不乐观它会对空间查询有很大帮助。

鉴于我几乎完全缺乏空间数据的知识/经验,我无法做得更好。

Example query:

    Declare @OrgID int
    Declare @Geog geography

    Set @OrgID =100011

    /* This will return a multi polygon */
    SELECT @Geog = geog 
    FROM Organization
    WHERE orgid= @orgid

    Select count(*)
    FROM ProblemChild WITH (INDEX(IDX_geog))  
    WHERE Geog.STIntersects(@geog) = 1) 

    Table Design:
    CREATE TABLE [dbo].[ProblemChild](
        [Phone] [char](10) NOT NULL,
        [Lat] [float] NOT NULL,
        [Lon] [float] NOT NULL,
        [Geog] [geography] NOT NULL,
        [Recordsource] [varchar](2) NOT NULL
     CONSTRAINT [PK_Phone] PRIMARY KEY CLUSTERED 
    ([Phone] ASC)WITH …
Run Code Online (Sandbox Code Playgroud)

index sql-server spatial

6
推荐指数
1
解决办法
1804
查看次数

谁能用ssl解释mongodb?

我按照MongoDB官网的说明创建了证书,但是不能正常使用。

我有一个副本集和自签名证书。

我需要对副本成员之间的流量进行完全加密。如何正确设置这些副本成员?以及如何进入 MongoDB shell?

我根据 mongod.conf 中的说明创建了证书:

sslMode = requireSSL
sslPEMKeyFile = /etc/ssl/mongo.pem ...
Run Code Online (Sandbox Code Playgroud)

并尝试添加参数:

sslCAFile =  /etc/ssl/mongo.crt
Run Code Online (Sandbox Code Playgroud)

并尝试输入:

mongo --ssl --sslPEMKeyFile /etc/ssl/mongo.pem --sslCAFile /etc/ssl/mongo.pem or 
mongo --ssl --sslPEMKeyFile /etc/ssl/mongo.pem --sslCAFile /etc/ssl/mongo.crt 
Run Code Online (Sandbox Code Playgroud)

我收到错误 - The server certificate does not match the host name

如果我使用客户端证书,则错误:SSL peer certificate validation failed:self signed certificate.

Mongod 服务已启动并正在运行。Mongo 版本 - 3.0.2。Centos - 6.5 x64。

我浏览了很多链接,但没有找到可行的解决方案。

如果可能的话,你能给我步骤吗?

mongodb ssl

6
推荐指数
1
解决办法
8441
查看次数

在 postgres 12 中使用 jit 处理性能问题

tl; dr:处理由 jit 引起的性能下降的最佳方法是什么?

背景

最近我从 postgres 11 迁移到 12 并注意到,一些查询/程序运行得相当慢。我做了一些研究并测试了不同的配置 - 结果表明 jit 开销超过了它的收益。我看到两种可能的解决方案:

  1. 通过运行set jit = off;一次永久禁用所有查询的 jit 。这有帮助,但感觉不自然。(也许是因为更改了默认配置,我没有做太多,因为没有这样的需要。默认值是理智的,需要更改的可能性很小。)这也意味着在运行长查询时放弃可能的性能提升.

  2. 在程序开始时禁用 jit 并在结束时启用它。我反对更改配置对并行运行的查询的影响。当然,这会损害日志查询的性能,这些查询会同时运行,但这可能会导致其他可能难以检测的错误。此外,这似乎比第一个解决方案更不正确 - 作为程序的一部分更改配置。

处理这个问题的最好方法是微调配置,这样 jit 就不会被完全丢弃,而且配置也不会在运行时改变。不幸的是,我发现几乎没有任何资源如何,这将是可能的(只有像参数jit_above_cost的文件,似乎是帮助不大)。

问题:解决此问题的最佳方法是什么?除了运行和测量之外,是否有关于何时禁用 jit 的任何标准?是否可以微调行为(例如,针对特定查询禁用 jit)?

编辑:我附上了一个没有jit的计划。计划太大了,不能在这里张贴。

postgresql postgresql-12 jit

6
推荐指数
1
解决办法
2132
查看次数

Postgres 是多对多数据 (M:N) 的理想选择吗?

我有一个用例,其中数据是多对多的,并且需要广泛的查询功能。

参与者和事件

一个用户/参与者可以注册多个事件。每个事件可以有很多参与者。这是一个多对多的关系。

考虑这样的数据集。

  • 每个事件可以有 1000 万用户注册。
  • 每个用户最多可以注册 1000 个事件
  • 有 1000 个活动正在运行

需要以下查询:

  • 查询 1. 获取所有注册活动的参与者
  • 查询 2. 获取参与者注册的所有事件
  • 查询 3. 获取参与者即将发生的所有事件

用于处理查询 1查询 2

EventParticipantTable :(eventId,participantId):1000 x 10M 记录

这需要搜索 1000 x 10M 的记录吗?

数据集可以按 eventId 拆分为块,以使其理想地仅扫描 10M 记录,但不确定如何在 PostgreSQL 中处理。

用于处理查询 3

事件表 + EventParticipantTable 加入

这需要连接两个表,其中我首先获取即将发生的事件的 Events 表(基于开始和结束时间戳),并且对于每个匹配的 eventId 需要查找查询的参与者 ID 是否存在于 EventParticipantTable 中。

这需要搜索 1000 个事件 * (1000 * 10M) 个事件参与者表条目?

在这种情况下,每表 1000 x 10M 记录不是问题吗?

postgresql scalability

6
推荐指数
1
解决办法
226
查看次数

如何计算 SQL 中输入字符串的所有分组排列?

给定像“ABC”这样的输入,生成一个查询,计算给定字符串的 0 个或多个的所有潜在分割,

期望的输出,

A   B   C
A   BC
AB  C
ABC
Run Code Online (Sandbox Code Playgroud)

给定一个像“ABCD”这样的输入

A    B   C    D
A    BC  D
A    B   CD
AB   C   D
A    BCD
AB   CD
ABC  D
ABCD
Run Code Online (Sandbox Code Playgroud)

并不是所有关心输出如何形成、数组、行、json 等。更多的是寻找分组的所有排列的离散列表。

postgresql query recursive

6
推荐指数
1
解决办法
1292
查看次数

我如何为所有模式中的所有表授予权限

我想要

GRANT SELECT
    ON ALL TABLES
    TO foo;
Run Code Online (Sandbox Code Playgroud)

但是 postgres 告诉我“TO”有一个语法错误。它期望像这样的 GRANT:

GRANT SELECT
    ON ALL TABLES
    IN SCHEMA public
    TO foo;
Run Code Online (Sandbox Code Playgroud)

我们已经碎片化,使得表了一把publicshard123shard124一切有一个表my_table,并public.my_table为双方的父母shard123.my_tableshard124.my_table。对于公共模式,我已将 SELECT 授予 foo,但 foo 没有任何分片模式的权限。

我也做过:

ALTER DEFAULT PRIVILEGES
    FOR ROLE dba
    GRANT SELECT
    ON TABLES
    TO foo;
Run Code Online (Sandbox Code Playgroud)

...它应该自动授予从现在开始创建的任何新表和模式。

有 1000 < n < 10000 个分片/模式,因此为每个分片/模式单独授予是不切实际的。

如何为所有现有模式(所有分片)中的所有现有表授予角色?

或者更好的是,我可以为所有模式 GRANTLIKE 'shard%'吗?

permissions postgresql-9.2

5
推荐指数
1
解决办法
5343
查看次数

SQL AlwaysOn 和系统中心配置管理器 TP 4 1601

最近,Microsoft 发布了 Configuration Manager (1601) 的技术预览版 4。根据 TechNet,“Configuration Manager 现在支持使用 SQL Server AlwaysOn 可用性组来托管站点数据库。安装新站点时,您可以直接安装以使用可用性组而不是 SQL Server 的普通实例。”

然后他们注意到“可用性组的成功配置和使用要求您熟悉配置 SQL Server 可用性组,并依赖于 SQL Server 文档库中提供的文档和过程。”

目前,为 Configuration Manager 站点数据库创建容错和避免单点故障的最佳做法是在每个管理点安装 SQL 副本。我观看了几个概述视频(从 2013 年开始)以更好地了解 AlwaysOn 的工作原理。

在 DBA 社区中,AlwaysOn 是提供容错和避免 SQL 副本单点故障的更好解决方案吗?

完全披露者:我正在学习配置管理器并且对 SQL Server 有非常基本的了解,因此您的任何建议或建议将不胜感激。

sql-server high-availability availability-groups

5
推荐指数
1
解决办法
629
查看次数

PostgreSQL - 在 REGEX_REPLACE() 上有效索引

我有一个查询,旨在循环和搜索重复地址,该查询使用 REGEX_REPLACE。我正在尝试在正则表达式上建立索引,就像进行解释一样,并且它使用正则表达式上的过滤器对 user_property 表进行顺序扫描

EXPLAIN (ANALYZE, COSTS, VERBOSE, BUFFERS)  with user_detail AS (
        SELECT user_id,
            max(user_property_value) FILTER (WHERE user_property_type_id = 6 ) AS FIRST_NAME,
            max(user_property_value) FILTER (WHERE user_property_type_id = 7 ) AS LAST_NAME,
            max(TO_DATE(user_property_value, 'YYYY-MM-DD')) FILTER (WHERE user_property_type_id = 8 ) AS DOB,
            max(user_property_value) FILTER (WHERE user_property_type_id = 33 ) AS BIRTH_NUMBER
        FROM PUBLIC.user_property cp
        JOIN PUBLIC.user c using (user_id)
        WHERE c.user_group_id= '38'
        AND cp.user_property_is_active
        GROUP BY user_id
    ),
    duplicate as (
        SELECT COALESCE(MAX(
                CASE WHEN REGEXP_REPLACE((address_line1), E'\\_|\\W','','g') = 'Flat …
Run Code Online (Sandbox Code Playgroud)

postgresql index regular-expression regex

5
推荐指数
1
解决办法
659
查看次数