数据库管理员

希望提高数据库技能并向社区中的其他人学习的数据库专业人员的问答

6
选择json_agg内的列
我有一个查询,如: SELECT a.id, a.name, json_agg(b.*) as "item" FROM a JOIN b ON b.item_id = a.id GROUP BY a.id, a.name; 如何选择JSON对象中b没有的列b.item_id? 我已经阅读了有关ROW,但它返回的JSON对象如下: {"f1": "Foo", "f2": "Bar"} 一旦提取JSON对象以匹配正确的列键,我将需要重新映射。我想避免这种情况,并保留原始列名称。

5
查询以返回查询,表或视图的输出列名称和数据类型
是否有PostgreSQL查询或命令返回查询,表或视图的字段名称和字段类型? 例如,如果将解决方案应用于简单的SELECT查询,SELECT * from person则应返回如下列表: Column Name | Column Type =========================== First Name | character Last Name | character Age | integer Date of Birth | date 我已经查看了information_schema以下答案中描述的视图,它似乎很好地覆盖了表格,并且我怀疑它也覆盖了视图,但是我还没有检查过。 最后一个是任意但有效的SELECT查询,例如,数据库上的JOINS, UNIONS等。是否有内置过程或其他存储过程或脚本可以对任何有效的QUERY完全返回相同的内容? 我正在开发一个用于创建数据和查询表单的程序,该信息对于数据验证和对返回的数据执行功能是必需的。

3
我可以为左外部联接提供默认设置吗?
假设我有表a(带有a1列)和b(带有b1和b2列),并且我执行了左外部联接 SELECT * FROM a LEFT OUTER JOIN b ON a.a1 = b.b1 然后,b1和b2将为NULL,其中a1的值不匹配b1的值。 我可以为b2提供默认值,而不是NULL吗?需要注意的是COALESCE不会在这里工作,因为我不希望默认值来覆盖潜在的NULL在B2那里是 B1匹配A1的值。 也就是说,a和b为 CREATE TABLE a (a1) AS VALUES (1), (2), (3) ; CREATE TABLE b (b1,b2) AS VALUES (1, 10), (3, null) ; a1 b1 | b2 --- -------- 1 1 | 10 2 3 …
21 postgresql  join 

1
主键带有“ NOT FOR REPLICATION”选项
我最近接手了一个项目,并且发现大多数表中的主键都具有“ NOT FOR REPLICATION” 属性。 我不是DBA,但是在大多数数据库中,没有主键的记录肯定会被视为损坏。这些记录中的大多数的主键几乎肯定会在某处用作外键。 这是以前的开发人员(谁不再为公司工作)的错误,还是涉及其他逻辑?我们甚至不在生产环境中使用复制,因此无论如何这实际上不会影响任何严重的事情,但是我想知道删除我不知道的所有这些指令是否还有其他副作用。 对于与该主题相关的许多搜索字词,我还没有找到很多有用的信息,因此,我可以肯定地说,这只是一个愚蠢的错误,我需要扭转,所以这个问题确实是为了缓解我的偏执狂。

4
如何联接两个表以获取第二个表中缺少的行
在简单的投票系统中 CREATE TABLE elections ( election_id int(11) NOT NULL AUTO_INCREMENT, title varchar(255), CREATE TABLE votes ( election_id int(11), user_id int(11), FOREIGN KEYs 为了获得用户投票的选举列表,使用了以下JOIN SELECT * FROM elections JOIN votes USING(election_id) WHERE votes.user_id='x' 但是如何获取用户未投票的选举列表?
21 join  select 

3
在Postgres中查询实例化视图的定义
我想知道如何在Postgres中查询实例化视图的定义。作为参考,我希望执行的操作与常规视图的操作非常相似: SELECT * FROM information_schema.views WHERE table_name = 'some_view'; 它为您提供以下列: table_catalog table_schema table_name view_definition check_option is_updatable is_insertable_into is_trigger_updatable is_trigger_deletable is_trigger_insertable_into 物化视图可能吗? 到目前为止,从我的研究看来,物化视图似乎是故意从information_schema中排除的,因为 information_schema仅可以显示SQL标准中存在的对象。 (http://www.postgresql.org/message-id/3794.1412980686@sss.pgh.pa.us) 由于它们似乎被完全排除在information_schema之外,因此我不确定该怎么做,但是我想做的事情有两个: 查询是否存在特定的实例化视图。(到目前为止,我发现这样做的唯一方法是尝试创建一个具有相同名称的垫视图,看看它是否爆炸了。) 然后查询实例化视图的定义(类似于上的view_definition列information_schema.views)。

2
使用位图索引扫描的查询计划中的“重新检查条件:”行
这是从注释到上一个问题的副产品: Postgres 9.4.4查询需要永远 使用PostgreSQL 9.4,Recheck Cond:在所输出的查询计划中的位图索引扫描之后,似乎总是出现一行EXPLAIN。 就像EXPLAIN所引用问题的输出中一样: -> Bitmap Heap Scan on table_three (cost=2446.92..19686.74 rows=8159 width=7) Recheck Cond: (("timestamp" > (now() - '30 days'::interval)) AND (client_id > 0)) -> BitmapAnd (cost=2446.92..2446.92 rows=8159 width=0) -> Bitmap Index Scan on table_one_timestamp_idx (cost=0.00..1040.00 rows=79941 width=0) Index Cond: ("timestamp" > (now() - '30 days'::interval)) …

1
MySQL解释中的filter的含义是什么?
如此处的MySQL文档所述: 已过滤的列指示将被表条件过滤的表行的估计百分比。也就是说,行显示了检查的行的估计数,行×过滤后的行数/ 100显示了将与以前的表连接的行数。在MySQL 5.7.3之前,如果使用EXPLAIN EXTENDED,则会显示此列。从MySQL 5.7.3开始,默认情况下启用扩展输出,并且EXTENDED关键字是不必要的。 我还是不明白。“过滤”在这里是什么意思?我们可以从本专栏获得什么信息? 例如,当我开始查询时,某些查询将显示100,而另一些则显示18或任何低于100的查询。 +-------------+-------+--------+---------+---------+------+----------+ | select_type | table | type | key | key_len | rows | filtered | +-------------+-------+--------+---------+---------+------+----------+ | PRIMARY | a | range | search | 4 | 174 | 18.00 | <-- | PRIMARY | b | eq_ref | PRIMARY | …

4
为什么Postgres会生成一个已经使用的PK值?
我正在使用Django,偶尔我会收到此错误: IntegrityError:重复的键值违反了唯一约束“ myapp_mymodel_pkey” 详细信息:键(id)=(1)已存在。 实际上,我的Postgres数据库确实有一个myapp_mymodel对象,其主键为1。 为什么Postgres会再次尝试使用该主键?或者,这很可能是我的应用程序(或Django的ORM)引起的吗? 刚刚,此问题连续发生了3次。我发现的是,对于给定的表,它确实发生了一次或多次,然后不再发生。它似乎在每个表完全停止运行几天之前就发生了,每个表至少发生一分钟左右才发生,并且只是间歇地发生(并非所有表都立即发生)。 这个错误是如此断断续续的事实(在2周内仅发生了3次左右-数据库上没有其他负载,只是我测试了我的应用程序)使我非常警惕低级问题。

1
MySQL为表中的每个记录计数来自另一个表的行
SELECT student.StudentID, student.`Name`, COUNT(attendance.AttendanceID) AS Total FROM student LEFT JOIN attendance ON student.StudentID = attendance.StudentID 我正在尝试计算最后一行,但是它计算所有结果并返回一个结果 我收到类似 因为有多个记录,因为K1052280的出勤ID中有两个条目,我想对它们进行计数并返回编号。就像是
21 mysql  select  count 

4
是否可以仅安装mongo Shell?
我已经安装了Docker,并且正在MongoDBMac上为我的本地开发运行一个容器。问题是我无法从CLI轻松连接到所说的数据库。我已经安装了Robo 3T,但是我更愿意使用CLI客户端。 有没有一种已知的方法可以在OS X上仅安装mongo shell(command mongo)而不是完整的DB发行版?
21 mongodb  mac-os-x 

1
如何启用SQL Server 2019的结果集缓存?
SQL Server 2019 CTP 2.3在sys.database中添加了一些新列,包括is_result_set_caching_on: SQL Server 2019的新增功能或ALTER DATABASE页面中尚未记录该文件。 我试着使用与Accelerated Database Recovery相同的语法,只是为了笑: ALTER DATABASE StackOverflow2013 SET RESULT_SET_CACHING ON; 但是没有运气: Msg 5058, Level 16, State 12, Line 8 Option 'RESULT_SET_CACHING' cannot be set in database 'StackOverflow2013'.

5
SQL Server的崩溃恢复能力可以提高吗?
我们有运行SQL Server(2008 SP4和2016 SP1)的PC,这些PC经常断电。显然,这有时会导致SQL Server数据库的(索引)损坏,此后我们需要恢复该损坏。 我知道SQL Server不是为这种情况而设计的,正确的解决方案是解决掉电的原因(如果您感到好奇,请在下面进一步介绍)。但是,SQL Server中是否可以设置任何调优选项以减少断电时数据库损坏的风险? 背景:“ PC”是安装在叉车上的Windows平板电脑。当用户关闭叉车时,平板电脑会断电。我们试图教会用户在关闭叉车之前正确关闭Windows,但是失败了(可能是因为大多数情况下仅将其关闭即可)。我们目前还在研究其他选择,例如添加UPS,以通知平板电脑关闭电源。
20 sql-server  crash 

3
大型(> 22万亿项)地理空间数据集,具有快速(<1s)的读取查询性能
我正在为大型地理空间数据集设计一个新系统,这将需要快速的读取查询性能。因此,我想看看是否有人认为在以下情况下有合适的DBMS,数据结构或其他方法来实现所需的性能,或者是否有经验/建议: 将从处理后的卫星雷达数据中连续产生数据,这些数据将覆盖全球。根据卫星的分辨率和地球的土地覆盖范围,我估算了完整的数据集,可在全球750亿个离散位置产生价值。在单个卫星的生命周期中,输出将在这些位置的每个位置产生多达300个值(因此,总数据集大于22万亿个值)。这是针对一颗卫星的,已经在轨道上有第二颗,在新的几年中计划再发射两颗。因此会有很多数据!单个数据项非常简单,仅包含(经度,纬度,值),但是由于项数众多,我估计单个卫星可以产生高达100TB的数据。 写入的数据永远不需要更新,因为它只会随着新的卫星采集处理而增长。写入性能并不重要,但读取性能至关重要。该项目的目标是能够通过简单的界面(如google map上的图层)可视化数据,其中每个点均基于其平均值,梯度或随时间变化的某些函数具有彩色值。(帖子末尾的演示)。 根据这些要求,数据库需要具有可伸缩性,我们可能会寻求云解决方案。该系统必须能够处理地理空间查询,例如“(纬度,经度)附近的点”和“(框)中的点”,并具有小于1的读取性能(用于定位单个点)以及包含多达50,000点(尽管最好是200,000点)。 到目前为止,我在1.11亿个位置拥有约7.5亿个数据项的测试数据集。我已经试用了一个postgres / postGIS实例,该实例可以正常运行,但是没有分片的可能性,我不能这样做,因为随着数据的增长,它也可以应对。远,并且通过分片就可以随数据量进行扩展。我最近对弹性搜索学到了一些知识,因此对此的任何评论对我来说都是新的,将是有帮助的。 这是我们希望使用完整数据集实现的快速动画: 这个gif(来自我的postgres试用版)正在提供(6x3)预先计算的栅格图块,每个图块包含约200,000点,并花费约17s来生成每个。通过单击一个点,可以通过在小于1秒的时间内将所有历史值拉到最近的位置来绘制图表。 对于冗长的帖子,我们深表歉意,欢迎提出任何意见/建议。

4
诊断“有时”缓慢查询的建议
我有一个存储过程,该过程通过覆盖索引从索引视图返回结果。通常,它运行速度很快(〜10毫秒),有时甚至可以运行8秒钟。 这是一个随机执行的示例(注意:这不是一个缓慢的执行,但是查询文本与传递的值相同): declare @p2 dbo.IdentityType insert into @p2 values(5710955) insert into @p2 values(5710896) insert into @p2 values(5710678) insert into @p2 values(5710871) insert into @p2 values(5711103) insert into @p2 values(6215197) insert into @p2 values(5710780) exec ListingSearch_ByLocationAndStatus @statusType=1,@locationIds=@p2 这是SPROC: ALTER PROCEDURE [dbo].[ListingSearch_ByLocationAndStatus] @LocationIds IdentityType READONLY, @StatusType TINYINT AS BEGIN SET NOCOUNT ON; …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.