小编pet*_*ter的帖子

我的索引是否被使用?

我正在使用 SQL 服务器,创建我们数据库的人在我们最大的表上添加了很多索引。这些索引每个只包含一个字段。

对我来说,这些索引似乎几乎没有用,这是一个坏主意。

我担心的是删除部分或全部这些索引并影响我们实时系统的性能。无法在我们的测试系统上对此进行测试,因为我们的测试系统没有相同的负载或数据量。

就是想...

  • 有没有办法确定哪些索引从未使用过?
  • 例如,是否有某种分析可以显示在一段时间内哪些索引用于哪些查询?

sql-server-2008

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

如何删除 SQL 中的前导字符

例如,我在 SQL 2012 中有一个表,我们可以将其称为“表”。里面有这样的物品,

Column

_one
_two
three_blah
four_blah
Run Code Online (Sandbox Code Playgroud)

我希望能够做到这一点,

select * from Table order by Column
Run Code Online (Sandbox Code Playgroud)

结果是这样的

four_blah
one
three_blah
two
Run Code Online (Sandbox Code Playgroud)

因此,它根据删除前导下划线字符对项目进行排序。它不能只是盲目地删除下划线字符,因为下划线可能位于项目的中间。

例如这不起作用,

select Replace(Column, '_', '') from Table order by Replace(Column, '_', '')
Run Code Online (Sandbox Code Playgroud)

sql-server

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

如何旋转多列

我有以下数据,

Year        DRC             DISP        Id
0           140.21          0.00        5808
1           112.37          1.00        5808
0           140.21          0.00        5824
1           112.37          0.00        5824
Run Code Online (Sandbox Code Playgroud)

我想像这样旋转它,

Id          DRC Year 0      DISP Year 0     DRC Year 1      DISP Year 1
5808        140.21          0.00            112.37          1.00
5824        140.21          0.00            112.37          0.00
Run Code Online (Sandbox Code Playgroud)

我试过这个,

SELECT *
FROM
(
    SELECT Year, DRC, DISP, ID From OriginalDataTable
) AS SourceTable

PIVOT
(
    max(DRC)
    for Year IN ([0], [1])
) AS PivotTable;
Run Code Online (Sandbox Code Playgroud)

它以 DRC 为中心,但也不以 DISP 为中心。结果是这样的(0,1是DRC值)。我明白为什么会这样,但我如何以 DISP 为中心?

DISP        Id …
Run Code Online (Sandbox Code Playgroud)

pivot

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

如何恢复复制的数据库

我正在使用事务复制来复制我们的实时数据库。这基本上是为了在服务器出现故障的情况下备份我们的数据库。

复制的数据库是只读的,因此我对其进行了备份、恢复和测试。

我立即注意到标识列不起作用。

例如,原始模式是这样的:

CREATE TABLE [dbo].[Inspection](
[InspectionID] [int] IDENTITY(1,1) NOT NULL,
[CarID] [int] NOT NULL,
Run Code Online (Sandbox Code Playgroud)

然后,在复制的副本上,它看起来像这样:

CREATE TABLE [dbo].[Inspection](
[InspectionID] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[CarID] [int] NOT NULL,
Run Code Online (Sandbox Code Playgroud)

这意味着标识列已禁用,对吗?

有没有办法解决这个问题并使这个数据库本身成为一个独立的副本?

另外,我注意到没有传播外键。我知道有一些设置,但是既然标识列被禁用(哪些是主键),传播外键是否会成为问题?

replication sql-server-2008 sql-server identity

2
推荐指数
1
解决办法
3615
查看次数

合并复制的多个发布?

我正在设计一个系统,它将拥有一个 SQL Server 2012 中央数据库。

每个客户端都将使用合并复制来获取其数据的离线副本,以便在路上进行编辑。

如果我添加一个出版物,我可以向该出版物添加过滤器。我无法解决的事情是只有一组过滤器。

对于我拥有的每个客户,他们将有一组不同的过滤器来过滤仅与他们相关的数据。从安全的角度来看,这非常重要。

仅凭一份出版物如何实现这一目标?

replication sql-server

2
推荐指数
1
解决办法
669
查看次数

将表链接在一起

如果我有一张这样的桌子,

CREATE TABLE [dbo].[StreetLight](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [Description] [nvarchar](50) NOT NULL,
    [Shape] [geometry] NOT NULL,
 CONSTRAINT [PK_StreetLight] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO
Run Code Online (Sandbox Code Playgroud)

哪种结构最适合用于将路灯相关联地连接在一起。例如我有路灯 1、2、3、4、5、6,我想说路灯 6 和 2 是相关的。例如,他们可能在同一条街上。

我有哪些方法可以做到这一点?

sql-server

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