小编Col*_*art的帖子

如何将 Oracle 数据库的内容导入 Visio 以创建实体关系图?

我有一个 Oracle 数据库,我想在 Visio 2007 Pro 中创建一个 ERD。

到目前为止,我已经查看了 DBMS_METADATA.GET_DDL 命令来生成 DDL。我知道我可以将 Access DB 导入 Visio,但似乎 Access 理解与 Oracle 不同的 SQL 方言,因此我需要调整每个 Create Table 命令以更改数据类型。

有没有一种在 Visio Pro 2007 中使用 DDL 创建 ERD 的简单方法?

erd oracle import ddl visio

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

SQL Server 中的 PAGE 压缩对运行查询的影响

我计划对我的数据库(数据仓库)中的一些大表应用 PAGE 压缩。这些表相当大,有超过 150 亿行。

当我在测试环境中应用压缩时,整个过程大约需要 22 个小时。这些表每天都会通过运行很长时间的查询进行访问。

  1. 在应用压缩时,是否会对正在运行的查询产生任何影响?任何锁等我应该知道?
  2. 是否有交错的方法来应用压缩?
  3. 您可能有任何其他输入/反馈?

sql-server-2008 compression

9
推荐指数
2
解决办法
5696
查看次数

更改跟踪内部结构是否从 SQL Server 2008 更改为 2012?

在解决将断开连接的设备与中央数据库服务器同步的问题时,我们在服务器上升级到 SQL Server 2012 后遇到了问题。看起来 CHANGE_TRACKING_MIN_VALID_VERSION 返回的值比它应有的值高 1(或至少比升级前的值高)。

我一直在研究如何设置简单示例的Arshad Ali 的精彩示例。

我已经运行了从 #1 到 #5 的脚本,以在 SQL Server 2008 和 2012 环境中的 Employee 表中插入、删除和更新一行。

在 2008 年,以下语句返回 0:

SELECT CHANGE_TRACKING_MIN_VALID_VERSION(OBJECT_ID('Employee'))
Run Code Online (Sandbox Code Playgroud)

在 2012 年,它返回 1。

在测试中通过更多脚本 (6-8) 工作时,我将保留期设置为 1 分钟,以期强制执行清理操作。我离开了一天,显然它运行了一夜。

在 2008 年的实例中,CHANGE_TRACKING_CURRENT_VERSION 和 CHANGE_TRACKING_MIN_VALID_VERSION 是相等的 (11)。在 2012 年的实例中,CHANGE_TRACKING_MIN_VALID_VERSION 比 CHANGE_TRACKING_CURRENT_VERSION (11) 高一 (12)。当数据库长时间空闲时,这可能会对同步过程产生影响。我们发现进程可能会陷入循环,尤其是在执行以下测试以确定是否需要重新初始化而不是同步时:

IF CHANGE_TRACKING_MIN_VALID_VERSION(object_id(N'dbo.Employee')) > @sync_last_received_anchor 
       RAISERROR (N'SQL Server Change Tracking has cleaned up tracking information for table ''%s''...
Run Code Online (Sandbox Code Playgroud)

有没有其他人经历过这种行为变化?有人有解释吗?

sql-server sql-server-2012 change-tracking

9
推荐指数
1
解决办法
1677
查看次数

在 postgresql 中删除索引

我错误地创建了一个索引,现在我试图删除该索引。由于表很大,删除索引需要很多时间。有没有其他方法可以快速删除索引?

postgresql index concurrency postgresql-9.1

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

适当使用mysql Optimize Table

我想提出一些维护我们的 MySQL 数据库、版本 5.5/6 和使用 InnoDB 的最佳实践。

我遇到了这篇文章,它基本上是在说优化表:

  1. 如果您的查询不使用 PK,则不会有太大的改进。
  2. 表上的其他索引以伪随机顺序构建,很可能不会从优化表中受益。
  3. 实际上可能会使更新变慢,因为现在每个更改都有更高的概率导致页面拆分。

我的问题是:

  1. 以上 3 点总是正确的吗?部分?一点也不?
  2. 什么时候可以尝试优化表格?
  3. 在哪些情况下优化表不会受益,甚至会使表的某些用途变得更糟?
  4. 除了PK之外,有没有办法优化表的索引?

mysql innodb optimization maintenance

9
推荐指数
1
解决办法
2939
查看次数

什么是 SQL 子句?

这听起来像是一个过于简单的问题,但我发现找到正确的答案并不容易。

关于“什么是 sql 子句?”的问题 互联网上的大多数资源只是提供了一个条款列表并解释了它们的作用。

但我试图抽象地理解它是如何定义的。就像一个通用符号,它捕获了可以编写的所有类型的查询以及子句在其中的适应方式。

是否存在所有子句共有的属性?为什么 UNION 被称为运算符而 HAVING 是一个子句?

sql-standard

9
推荐指数
1
解决办法
5278
查看次数

用户“域\用户名”登录失败。(Microsoft SQL Server,错误:18456)

连接到本地系统数据库时,我遇到了这个问题,但是当我连接任何服务器时,它都会连接。

Login failed for user 'domain\username'. (Microsoft SQL Server, Error: 18456)

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&EvtSrc=MSSQLServer&EvtID=18456&LinkId=20476
Run Code Online (Sandbox Code Playgroud)

sql-server

8
推荐指数
2
解决办法
17万
查看次数

为什么我创建的基于函数的索引会降低成本,但不会出现在解释计划细分中?

对于糟糕的列/表名称感到抱歉,但由于这是一个工作项目,我想确保可以询问。我只是希望至少了解为什么我没有看到我的功能索引被使用,所以我觉得在生产环境中添加这些索引更好。

该查询使用我创建的视图,该视图具有许多不同的列,其中包含执行以下操作的 where 子句:

  ....
  AND e.sysid = NVL(wi.ALPHAid, -999)
  AND NVL(wi.ALPHAid,   -999)       <> -999
  AND NVL(wi.BRAVOid,   -999)        = -999
  AND NVL(wi.CHARLIEid, -999)        = -999
  ...
Run Code Online (Sandbox Code Playgroud)

我的理解是,如果您通过函数传递列,则 Oracle 不能使用索引,而您需要创建基于函数的索引。因此,在创建索引之前,我在解释计划中获得了以下成本:

计划哈希值:1233409744

-------------------------------------------------------------------------------------------------------------------
| Id  | Operation                        | Name                           | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                 |                                |     1 |   223 |    56   (6)| 00:00:01 |
|   1 |  SORT ORDER BY                   |                                |     1 |   223 |    56   (6)| 00:00:01 |
|   2 …
Run Code Online (Sandbox Code Playgroud)

index oracle explain

8
推荐指数
1
解决办法
456
查看次数

检查子查询结果中是否有任何值

我有一个复杂的子查询,它返回一个订单 ID 列表。我需要得到一份有这些订单的客户名单。问题是有两种方法可以将客户分配给订单(两个字段之一)。我可以做这样的事情:

 select *
 from Customers
 where orderId in (select...) 
 or secondaryOrderId in (select ...)
Run Code Online (Sandbox Code Playgroud)

问题是子查询是巨大的,无论是执行时间还是屏幕空间。有没有办法检查其中一个字段是否包含所需的结果之一?

sql-server cte sql-server-2008-r2 subquery

8
推荐指数
1
解决办法
4万
查看次数

意外更改数据库名称 (SQL Server 2008)

它没有发生在我身上。但我正在考虑这个问题。

我在弄乱我的训练环境,误点了数据库名称,然后我触摸了字母A。

案件

假设我按下了回车键。现在数据库叫A,不记得原来的名字了。CTRL + Z 不起作用。

案例2

在这样的情况下,在生产环境中该怎么办?

我知道这不可能发生,因为数据库没有设置为 SINGLE USER。但如果发生了。该怎么办?为了论证起见,假设它是一个现在没有人使用的数据库。

sql-server-2008 sql-server

8
推荐指数
3
解决办法
2118
查看次数