数据库管理员

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

1
关系是否比没有效率的大桌子慢?
我在工作中被要求多次违反“第一种标准格式”(使用空/空值重复列中的组),“是为了提高计算机处理能力”。简而言之,“学生”表应至少包含8个空字段(例如电话:phone1,电话2,电话3 ...),而不是我的建议-包含电话号码(以及其他可能的元数据)的“电话”表外键是学生证号。我的老板说,最好以这种方式存储它们,因为“ CPU周期更少,这在Web平台中很重要”,而不是使用关系。我说,在最坏的情况下,它可以忽略不计。 在该示例中,使用关系(假设表在中等大小的Web应用程序中充满了很多记录)比使用这种表架构慢得多?

2
每当phpMyAdmin加载时,在InnoDB上的COUNT(*)
这是一个已知的问题,innodb运行缓慢 SELECT count(*) FROM Table 因此,我避免了这一点。但是我注意到,每当我登录phpmyadmin时,它将自动count(*)为我的具有19k行的innodb表执行a ,这可能需要一分钟的时间来执行。但是,count(*)对于其他具有400万行的innodb表,它不会启动。 在phpmyadmin中,“记录”列下的另一个线索是19k行表的记录数显示了确切的值,而400万行表显示了大约的值。 我了解innodb表可以估算行数。但是似乎对于较小的表(在这种情况下,行数为19k),phpmyadmin决定做一个a,count(*)而不是仅仅给出一个估计。 问题是,有没有办法阻止phpmyadmin在我的innodb表上进行这种计数?每当我刷新phpmyadmin屏幕时,只需给出一个估计值而不用进行昂贵的行计数就可以了。
8 mysql  innodb 


2
数字资产数据库
我在一家印刷厂工作,那里有相当大的旧印刷工作档案。当前,要找到工作,我们必须搜索SMB共享(在win2000服务器上),该共享可以查看数十万个文件。 我们的工作数据按以下顺序组织:Year> Month> Customer_Name_Job#,然后该工作的内容位于最后一个文件夹中。 有没有一种创建数据库的方式,以便我们可以查询作业描述。或工作编号?基本上,一个简单的搜索要比使用Windows搜索快得多。我尝试了Windows索引服务,但只找到.doc文件,找不到文件夹名称或PDF。 将来,我们计划创建一个SQL数据库,在创建作业时将在其中输入完整的信息,以便将来轻松查询。我希望将一些东西组合在一起,使搜索旧订单更加容易。


2
在ER图中具有没有关系的实体是否可以?
我正在为一个类分配创建一个ER图,我想知道是否有可能创建一个与任何其他实体没有直接关系的实体,并仅使用外键来连接它们。下图说明了我想做什么 基本上,我的图已经开始变得非常复杂,如果我不必在每个实体之间保持联系,那将很棒。 FWIW,如果有帮助,我正在使用Chen和Crow's Foot表示法。

1
为什么在列上运行ALTER TABLE会使它从NOT NULL变为NULL?
我正在大规模更新SQL Server数据库。我将所有numeric(38,0)列更改为int (是的,SQL Server脚本是从Oracle脚本创建的)。使用SMO和C#(我是一名软件工程师),我设法生成了非常不错的脚本,如SQL Server Management Studio。除了一个特定的问题,所有这些工作都非常好: 对于少数几个表,当我调用ALTER TABLE [myTable] ALTER COLUMN [columnA] INT它时,它决定还更改的列NOT NULL to NULL。这当然是一个巨大的问题,因为我需要为那些特定列上的大多数表重新生成主键。 显然,我在使用SMO时有很多选择,可以找出哪些列是主键,并在更新数据类型后或更新时将它们强制为NOT NULL,但我真的很好奇这可能是什么原因。

3
MySQL使用什么机制在Windows Server 2008上计划备份?
在Windows Server 2008上运行的MySQL Server(v5.1.45-community)上计划数据库备份时,使用什么机制触发备份运行?我认为它正在使用Windows Task Scheduler,但这些备份没有任何明显的任务。SQL Server使用单独的代理服务。MySQL中有类似的东西吗? 其他信息:备份是使用MySQL Administrator设置的。我知道如何安排备份,但是它们没有运行,并且我正在寻找有关从哪里开始解决问题的见解。
8 mysql  backup  windows 

2
如何用联接替换where子句?
通常,当我看到使用类似以下内容的SQL时: select * from employees where epmloyeeTypeId in (select id from type where name = 'emp') 我将其替换为where: select e.* from employees e inner join type t on t.id=e.epmloyeeTypeId and t.name = 'emp' 如果逆是子句not in(如下面)而不是in子句,是否可以对逆做同样的事情? INSERT into Subscriptions(ProjectId, RecordTypeCID, NTID, Active, Added, LastUpdate, UpdateBy) SELECT @ProjectId, RecordTypeCID, @NTID, 1, GETDATE(), GETDATE(), …

2
将PRIMARY KEY添加到大型InnoDB表的好方法是什么?
在使用InnoDB存储引擎的MySQL 5.5中,我有一个包含约3000万行的表。该表具有一个外键,该外键链接到具有约300万行的另一个表。 我想在较大的表中添加一个主键,但是不确定如何最好地做到这一点。我没有可用于此的现有列(或一组列),那么该如何处理? 我已经看到了一些对内部InnoDB记录ID的引用,但是没有找到它是否可以访问。 否则,也许我将需要转储并重新加载数据,并手动添加ID。 谢谢。

3
更改了max_allowed_pa​​cket并仍然收到“ Packet Too Large”错误
我使用mysqldump创建用于备份目的的平面文件。我已使用此文件在备用服务器上重新创建数据库。我在命令行上通过ssh运行了导入过程,但收到多个Packet too Large错误。 我用更大的max_allowed_pa​​cket(即1000M)重新启动了mysql,但仍然收到错误。我什至尝试在导入文件中设置max_allowed_pa​​cket,仍然收到错误。 有没有一种方法可以确保设置了max_allowed_pa​​cket和/或使用mysqldump来创建不会引起此问题的文件? 以供参考: 未压缩的mysqldump文件约为2GB 数据库类型为INNODB

1
完整计划缓存行为
在SQL Server 2005中,当计划缓存填满时会发生什么?我进行了一些研究,从收集的点点滴滴来看,似乎已给缓存的计划指定了“年龄”,其中包括其权重或编译成本乘以自缓存以来已运行的次数。随着时间的流逝,该年龄逐渐减少,直到达到0,然后才被视为“老化”,并在需要时成为冲洗对象。计划缓存填满后,会从缓存中清除过期的计划。 幕后是否还有其他事情使这种情况复杂化? 谢谢, 马特

2
如何搜索以查看系统上是否存在MySQL用户?
我找不到用户是show grants for 'username'@'localhost''因为我认为用户名可能略有不同,所以我想对所有数据库用户进行通配符搜索。我怎样才能做到这一点? 更新:为澄清起见,我在想也许我还不是100%清楚。通过通配符,我的意思是我希望能够仅搜索一部分用户名,或者搜索名称匹配模式的所有用户。在系统上,我需要有超过5k的用户,尽管这并不会造成很大的性能损失,但我也不想一次浏览一次。
8 mysql 

5
MySQL:以前缀开头的DROP TABLE
示例:我有30多个表以前缀“ dp_”开头,约有12个表以“ ex_”开头。 问题:如何在一个查询中删除所有以“ dp_”开头的表?
8 mysql 


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.