数据库管理员

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

5
PostgreSQL:表格的创建日期
我最近完成了一个项目,在此期间创建了许多数据库表。 这些表大多数包含临时垃圾,我正在寻找一种列出所有这些表的简单方法。 有没有一种方法可以列出根据创建日期排序的所有数据库表?

5
从一组值中,如何找到未存储在表的列中的值?
我有一个表,它可能存储数十万个整数 desc id_key_table; +----------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------------+--------------+------+-----+---------+-------+ | id_key | int(16) | NO | PRI | NULL | | +----------------+--------------+------+-----+---------+-------+ 从程序中,我有大量的整数。我想看看上面的id_key列中没有这些整数中的哪个。 到目前为止,我已经提出了以下方法: 1)遍历每个整数并执行: select count(*) count from id_key_table where id_key = :id_key 当count为0时,表中缺少id_key。 这似乎是一种可怕的,可怕的方式。 2)创建一个临时表,将每个值插入临时表,然后在两个表上执行JOIN。 create temporary table id_key_table_temp …
12 mysql 

5
是否有开源分层数据库管理系统?
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为数据库管理员Stack Exchange 的主题。 11个月前关闭。 我一直在寻找一种分层数据库管理系统,而我遇到的唯一一个系统是IBM的ims。是否有一个可以使用的开源系统?

3
在T-SQL中使用CAST降低性能
我们有一个SQL生成器,该生成器通常针对指定的字段发出SQL条件语句(为了便于讨论,我们将其标记为myField)。 如果myField类型为NVARCHAR,我们可以将所述字段与字符串进行比较,如下所示:myField = 'foo'。 但是,这不适用于type的字段NTEXT。因此,我们必须使用强制转换进行比较 CAST(myField as NVARCHAR(MAX)) = 'foo'。如果myField类型为NVARCHAR或,则实际上可以使用NTEXT。 在已经是类型的字段上执行上述强制转换会对性能产生什么影响NVARCHAR?我希望SQL Server足够聪明,可以动态地识别myField已经存在的类型NVARCHAR(有效地将其CAST变成无操作)。

3
计算系列中每个日期覆盖多少日期范围的最快方法
我有一个表(在PostgreSQL 9.4中)看起来像这样: CREATE TABLE dates_ranges (kind int, start_date date, end_date date); INSERT INTO dates_ranges VALUES (1, '2018-01-01', '2018-01-31'), (1, '2018-01-01', '2018-01-05'), (1, '2018-01-03', '2018-01-06'), (2, '2018-01-01', '2018-01-01'), (2, '2018-01-01', '2018-01-02'), (3, '2018-01-02', '2018-01-08'), (3, '2018-01-05', '2018-01-10'); 现在,我想为给定的日期和每种类型计算dates_ranges每个日期落入多少行。零可能会省略。 所需结果: +-------+------------+----+ | kind | as_of_date | n | +-------+------------+----+ | 1 | …

1
压缩PostgreSQL数据库
我有一个超过500GB的大型PostgreSQL数据库,这太大了。无论如何,有没有将数据库压缩到更易于管理的大小?我尝试使用SquashFS进行此操作,并将数据库压缩到177GB,但是PostgreSQL要求数据库具有写访问权限,并且Squashed系统为只读。是否有更多经验丰富的数据库用户对实现此目标有任何建议? 该数据库保存着地球的GIS数据,并将在部署的系统上本地使用。目前它位于1TB SSD上,但是,我试图避免只是为了容纳大型数据库而拍打额外的硬盘驱动器。数据库按预期执行,没有问题,我只想将其压缩到更易于管理的大小,并避免将其放在单独的驱动器上。

4
如何获得计数为零的组?
我将尝试从SQL Server数据库中的数据制作图形。我会在所有街道上都看到这条街上生活的用户数,即使计数为零。 为此,我尝试了以下查询: Create table Streets( ID int IDENTITY primary key, Name varchar(100) ); create table users( ID int IDENTITY primary key, Username varchar(100), StreetID int references Streets(id) ); insert into streets values ('1st street'), ('2nd street'), ('3rd street'), ('4th street'), ('5th street'); insert into users values ('Pol', 1), ('Doortje', …

3
如何调查BULK INSERT语句的性能?
我主要是使用Entity Framework ORM的.NET开发人员。但是,因为我不想失败使用ORM,所以我试图了解数据层(数据库)中发生的情况。基本上,在开发过程中,我启动了探查器,并检查了查询中代码的某些部分生成了什么。 如果我发现非常复杂的东西(即使不仔细编写,ORM甚至可以从相当简单的LINQ语句生成可怕的查询)和/或繁重的事情(持续时间,CPU,页面读取),请在SSMS中进行处理并检查其执行计划。 对于我的数据库知识水平,它工作正常。但是,BULK INSERT似乎是一种特殊的生物,因为它似乎不会产生SHOWPLAN。 我将尝试说明一个非常简单的示例: 表定义 CREATE TABLE dbo.ImportingSystemFileLoadInfo ( ImportingSystemFileLoadInfoId INT NOT NULL IDENTITY(1, 1) CONSTRAINT PK_ImportingSystemFileLoadInfo PRIMARY KEY CLUSTERED, EnvironmentId INT NOT NULL CONSTRAINT FK_ImportingSystemFileLoadInfo REFERENCES dbo.Environment, ImportingSystemId INT NOT NULL CONSTRAINT FK_ImportingSystemFileLoadInfo_ImportingSystem REFERENCES dbo.ImportingSystem, FileName NVARCHAR(64) NOT NULL, FileImportTime DATETIME2 NOT NULL, CONSTRAINT UQ_ImportingSystemImportInfo_EnvXIs_TableName UNIQUE …

2
使用窗口函数在分区中结转第一个非空值
考虑一个记录访问量的表 create table visits ( person varchar(10), ts timestamp, somevalue varchar(10) ) 考虑这个示例数据(时间戳简化为计数器) ts| person | somevalue ------------------------- 1 | bob |null 2 | bob |null 3 | jim |null 4 | bob | A 5 | bob | null 6 | bob | B 7 | jim | X …

3
更改maxrecursion的系统范围默认值
如何更改系统范围的默认值MAXRECURSION? 默认情况下为100,但是我需要将其增加到1000。 我无法使用查询提示,因为我使用的程序会接受我的查询并为我执行查询,但是不幸的是,我无法解决此限制。 但是,我确实对服务器实例具有管理员权限。我在服务器方面进行了摸索,但没有看到与查询选项或递归相关的任何信息。我假设有有是一个某处在那里我可以更新系统范围内的默认。 有任何想法吗?

1
将存储过程的结果插入表变量
我有一个存储过程,将值存储在表变量中。我选择这些值并在调用过程时将其返回。 我试图在另一个表变量中设置这些返回值,但我无法弄清楚。 存储过程 ALTER PROCEDURE [dbo].[GetOrSetDomainId] @DomainName varchar(50), @DomainUrl varchar(50) AS BEGIN DECLARE @DomainId bigint; DECLARE @NumberOfRwos bigint; DECLARE @DomainHistory TABLE ( DomainId bigint, HasHistory bit, ServerOnline bit, DatabaseOnline bit, ServerPerformance bigint, DatabasePerformance bigint, SoldTickets bigint ) SELECT @NumberOfRwos = COUNT(Id) FROM DomainData WHERE DomainName = @DomainName OR DomainUrl = …

1
死锁报告中“锁定记录但不等待间隙”的含义
关于locks rec but not gap waitingTRANSACTION(1)中的含义,哪个正确? 已经授予间隙锁,正在等待聚集索引X锁? 已经授予聚集索引X锁,正在等待间隙锁? Transaction(1)中有31行。这些行的含义是什么?这代表间隙锁定吗? 0: len 4; hex 800c20d6; asc ;; .... 29: SQL NULL; 30: SQL NULL; 最新检测到的死锁报告 LATEST DETECTED DEADLOCK ------------------------ 2015-09-25 15:27:24 1b8084000 *** (1) TRANSACTION: TRANSACTION 5226928, ACTIVE 0 sec fetching rows mysql tables in use 1, locked 1 LOCK WAIT …
12 mysql  deadlock 

2
Redshift表未显示在架构表中?
在Redshift上,为什么我的表没有显示在以下查询中?如我运行的下一个查询所示,它确实存在。我想要一种列出架构的所有表的方法: mydb=# select distinct(tablename) from pg_table_def where schemaname = 'db'; tablename ----------- (0 rows) mydb=# \d db.some_table Table "db.some_table" Column | Type | Modifiers -----------------+-----------------------------+----------- ...correct info shows up here... ...but nothing showed up above?
12 redshift 

2
如何使用T-SQL(不是SSMS)将登录名映射到数据库
我正在编写一个程序,要求我分配代码中的所有权限和所有内容。我陷入了这一部分: 我只想做相当于单击msdb数据库的“地图”下的小框,然后将该用户分配给SqlAgentUser角色的等效操作。我需要一个用户才能添加/编辑SQL Server代理作业。我可以使用SSMS正确进行设置,但是我一生都无法弄清楚如何在原始SQL中进行设置。 我已经研究过ALTER LOGIN,但是没有看到任何可以满足我需求的东西。我怀疑我只是不知道Google的正确用语。我通常不会做这种事情。 任何帮助深表感谢!


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.