数据库管理员

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

2
如何获得视图的执行计划?
我有一个带有多个视图的架构。我需要检查执行计划,以确保适当的索引到位并正在使用。 我该怎么做呢? 我宁愿不必复制输出并将其粘贴show create view <viewname>到中explain,尤其是因为某些视图是建立在其他视图之上的,这会很痛苦。

3
如何识别表格中的列顺序
我需要按表定义顺序列出表中的列: select * from syscolumns where id = object_id('MyTable') --order by colid 通过检查syscolumns表格,两列看起来很相关:colid和colorder。关于syscolumns的MSDN文章说: colid | smallint | Column or parameter ID. colorder | smallint | Identified for informational purposes only. | Not supported. Future compatibility is not guaranteed. 我试着跑 select * from syscolumns where colorder <> colid 它不产生任何行,这使我认为大多数时间这些列具有相同的值。 看起来最安全的选择是使用colid。但是,我很想知道:这两列之间是否有区别,如果有区别,那有什么区别? 同样,MSDN文章(未确认)colid反映了表定义的顺序。尽管可以合理地假设情况确实如此,但如果您确定情况确实如此,您能告诉我吗?

4
如何在phpMyAdmin中显示数据库结构?
有什么方法可以使用phpMyAdmin生成我的数据库结构的报告吗?我想要的是一种类似于以下的表格格式,以及一个实体关系表格。 Table name: List Description: Subscriber list information Field Type Null Description ListID Int N ListName Varchar N ListFromName Varchar N Default person represent for the mail ListReplyTo Varchar N Default return address ListSubject Varchar N Default subject title of mail ListRemindSub Int N Whether notify when people subscribe ListRemindUnSub …

3
为什么MySQL表崩溃?我该如何预防?
我是Moodle网站的管理员,该网站的Users表损坏了,因此无法使用。 幸运的是,一个简单的方法REPAIR TABLE mdl_user使它可以再次工作。问题是我不知道为什么它实际上崩溃了并使它无法使用,我想确保下次可以更好地进行准备。 我不是一个经验丰富的DBA,我只是做很多事情的开发人员,所以请多多包涵。 我可以恢复备份,但是我想有防止崩溃的方法。 这些表是utf8_general_ci并使用MyISAM。 为什么MySQL表崩溃?我该怎么做才能防止这种情况发生?
9 mysql  myisam 

1
用于处理多个支付网关的架构设计
这更多是一个需要反馈的问题。我正在设计一个处理多个支付网关的数据库。支付网关通常需要在付款之前有一张表,用于显示订单详细信息(这对于所有PG来说都是常见的),以及一个用于交易详细信息的表,用于存储在付款后的响应。 现在要处理多个支付网关,我可以保留一个交易表,用所有支付网关的所有可用字段填充该表,并在该字段中说明该行来自哪个PG。 或者,我可以为每个PG创建单独的事务表中包含前缀paypal_或bank_等等,每一个都具有场他们每个人的需要。 我只是不确定哪种方法更理想。还需要针对以后可能遇到的类似情况学习它。


2
是否有可以帮助SQL Server维护任务的PowerShell脚本集合?
我一直在研究PowerShell,并且一直(慢慢地)将其纳入我的日常DBA任务中。 到目前为止,我已经看到了许多用于许多不同管理活动的断开连接的PowerShell脚本。 我想知道的是,是否存在人们通常要去的官方(或可识别的)PowerShell脚本集合或存储库,以获取用于常见DBA活动的SQL Server PowerShell脚本(例如Ola Hallengren的T-SQL脚本)。

4
是否有充分的理由将日期和时间保留在单独的列中?
我试图了解我们的软件供应商决定将日期和时间保留在单独的列中。例如,当行被创建或更新时。时间和日期都是DateTime列。我们正在使用SQL Server 2005。 该数据库保存着我们ERP系统的数据,我相信最大的表包含约300万行。大多数表大约在10万至1000万行之间。 我个人默认情况下会为单个时间戳选择一个DateTime。这样可以简化时差计算,并且可以轻松地从时间戳中提取日期和时间部分。它还将消耗更少的空间。 是将日期和时间分开是不好的做法,还是我不理解的设计中有什么很棒的东西?

3
mysql花费太长时间发送数据
我有一个简单的表,其中包含数百万个记录(14,000,000),而对于一个简单的查询,它花费了太多的时间“发送数据”。 桌子 CREATE TABLE IF NOT EXISTS details ( id int(11) NOT NULL, date date NOT NULL, time int(2) NOT NULL, minutes_online decimal(5,0) NOT NULL, minutes_playing decimal(5,0) NOT NULL, minutes_chatting decimal(5,0) NOT NULL, minutes_away decimal(5,0) NOT NULL PRIMARY KEY (id,date,time) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; 简单查询 mysql> SELECT * FROM …

1
添加SPARSE使表更大
我有一个通用的日志表,大约有500万行。 有一个“强类型”字段存储事件类型,还有一堆“弱类型”列包含与事件相关的数据。也就是说,那些“错误输入”列的含义取决于事件的类型。 这些列定义为: USER_CHAR1 nvarchar(150) null, USER_CHAR2 nvarchar(150) null, USER_CHAR3 nvarchar(150) null, USER_CHAR4 nvarchar(150) null, USER_CHAR5 nvarchar(150) null, USER_INTEGER1 int null, USER_INTEGER2 int null, USER_INTEGER3 int null, USER_INTEGER4 int null, USER_INTEGER5 int null, USER_FLAG1 bit null, USER_FLAG2 bit null, USER_FLAG3 bit null, USER_FLAG4 bit null, USER_FLAG5 bit null, USER_FLOAT1 float …

2
为什么UPDATE SET REPLACE()语句匹配行,但什么都不更改且不发出警告?
我正在字段中寻找某个字符串,并希望将其替换为新字符串。具体来说,我希望将对一个URL的所有引用都更改为另一个URL。我已经编写了此SQL语句,并mysql>使用MySQL Community Server 5.1.54在CentOS 5.5 上的提示符下运行它。 update [table] set [field] = REPLACE([field],'%domain.com%','%domain.org%'); 响应为: Query OK, 0 rows affected (0.02 sec) Rows matched: 618 Changed: 0 Warnings: 0 我如何跟踪为什么不进行任何更改? 编辑1: 多亏了Aaron Bertrand,我发现它REPLACE()无法处理通配符,而且我完全错误地使用了它(认为:缺少WHERE子句)。这是我修改后的声明: UPDATE [table] SET [column] = REPLACE ( [column], 'companydomain.com', 'companydomain.org' ) WHERE [column] LIKE '%companydomain.com%'; 我收到了古老的,熟悉的: Query OK, 0 …
9 mysql  dml 



1
用用户和组建立数据库的基本模型是什么?
我正在尝试为网站的基本安全系统找到最佳方法。我知道我想要用户和组。 我以为我有: user_table user_id user_name ... group_type group_id group_name parent_id ... group_table id user_id group_id 第一个是用户,第二个是组,第三个是连接两者的中介表。一个用户有多个组。 听起来还好吗?

1
如何获得准确的查询性能?
我正在尝试提高存储过程的性能。当我运行SP时,它几乎立即完成,就好像已缓存了某些内容一样。有人告诉我在SSMS中执行SP之前,请使用以下两行SQL: DBCC DROPCLEANBUFFERS DBCC FREEPROCCACHE 当我使用上面两行代码运行SP时,大约需要8秒钟。但是,这是否真的给了我真正的执行时间(就像我从应用程序中运行一样)?我怎么知道?

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.