我们安装了 Microsoft SQL Server 2016 Web Edition 服务器的服务器运行速度非常慢。
我们正在考虑增加其许可的核心数量。但是,我们需要检查数据库当前使用了多少个 CPU 核心。我们的 Windows Server 2016 有 16 核(双)CPU。
SELECT x, y, z,
CASE
WHEN COUNT (PH.header_id) OVER (PARTITION BY PL.header_id)
NOT IN (null,0) THEN L_Count
ELSE COUNT (PH.header_id) OVER (PARTITION BY PL.header_id)
END as quantity
Run Code Online (Sandbox Code Playgroud)
有没有更有效的写法?
我非常清楚它在一张大桌子上执行了两次计数。
不幸的是,我无法发布查询计划,因为我正在使用的用户帐户正在等待 SHOWPLAN 权限。
NOT IN 子句是一个附带问题。感谢您提供有关改进方法的评论反馈,但问题的焦点是重复计数。
我有一张表格,如下所示:
create table z_test_duration
( Days date,
Status char(8)
);
Run Code Online (Sandbox Code Playgroud)
样本数据如下:
| 天 | 地位 |
|---|---|
| 2022 年 1 月 1 日 | 在 |
| 2022 年 1 月 2 日 | 在 |
| 2022 年 1 月 3 日 | 在 |
| 2022 年 1 月 4 日 | 离开 |
| 2022 年 1 月 5 日 | 在 |
| 2022 年 1 月 6 日 | 离开 |
| 2022 年 1 月 7 日 | 在 |
| 2022 年 1 月 8 日 | 在 |
| 2022 年 1 月 9 日 | 离开 |
想要的结果是这样的
| 时间到了 | OFF_DATE | COUNT_OF_ACTIVE_DAYS … |
|---|
SQL Server 2019
运行时sp_BlitzIndex生成的结果是否使用查询存储数据?尝试了解查询存储是否影响sp_BlitzIndex报告。
sp_BlitzIndex在其报告中有多项建议,我试图了解应遵循哪些步骤sp_BlitzIndex来验证是否需要这样的索引。它应该遵循两者还是其中之一?sp_BlitzCache/sp_BlitzQueryStore
一个例子是其中一行的使用 -
603 uses; Impact: 100.0%; Avg query cost: 74.4459
在看起来很棒的纸上,在复制并粘贴索引的 TSql 之前,我如何才能准确地了解哪些查询会使用建议的索引?(所谓的 603 使用)。
在索引调整过程中有点迷失了自己,因为感觉每个命令都只是重定向到另一个命令,不知道我应该在哪里停止并采取行动哈哈。
泰
我有一个旧的数据库副本。我通过备份从客户系统中检索它并将其恢复到我的本地 PC 上。我想查看同一数据库的最新副本。显然我不能这样做,在同一个数据库上工作,因为我的旧副本将被覆盖,所以我首先将我的数据库从“Firm_Customer”重命名为“Firm_Customer_orig”。
现在我想恢复数据库的最新副本,但失败了,如以下错误消息中所述:
System.Data.SqlClient.SqlError:无法覆盖文件“C:\Program Files\Microsoft SQL Server\MSSQL15.SQLEXPRESS01\MSSQL\DATA\Firm_Customer.mdf”。它正在由数据库“Firm_Customer_orig”使用。(Microsoft.SqlServer.SmoExtended)
我期望数据库从“Firm_Customer”重命名为“Firm_Customer_orig”也会导致文件“C:\Program Files\Microsoft SQL Server...\Firm_Customer.mdf”的重命名,但显然数据库重命名只是“部分” ”。
有没有办法强制数据库重命名以执行完整重命名(与“Firm_Customer”相关的所有内容都必须重命名为“Firm_Customer_orig”)?
哦,在我忘记之前:我正在使用 Microsoft SQL Server Management Studio,版本“v18.12”。
提前致谢
此查询基于 2 个表,其中某些行PerfData1具有多个子记录。行不重复,但有些id行重复。我只需要获取其中的 1 行,这也是一个分页查询,它需要获取总数或现有项目以及最终子集。
查询工作正常。但是,我不确定在内联视图(内部ORDER BY)中设置的顺序是否会保留在最终输出中。到目前为止,没有看到任何偏差。但我记得在 SQL Server 世界中这是不能保证的,因此我需要 2 个ORDER BY子句。
SELECT
All_Results_Table.*
FROM
(
SELECT
Rownum_Table.*,
COUNT(*) OVER() as sys___countAllFoundRecords,
ROWNUM sys___outputRownum
FROM
(
SELECT
ROW_NUMBER() OVER(PARTITION BY PerfData1.id ORDER BY PerfData1.id) AS sys___multivalueRowSequence, -- This is OPTIONAL when we DON'T want dupe IDs
ROW_NUMBER() OVER(order by 1) AS sys___innerRowNumber,
PerfData1.id,
PerfData1.c1 item,
PerfData2.c1 subitem
FROM
PerfData1 inner join
PerfData2 on PerfData1.id = PerfData2.fkId
WHERE (1 = 1)
ORDER …Run Code Online (Sandbox Code Playgroud) 我有一张下表
| PK | 姓名 | 氟肯 |
|---|---|---|
| 01 | ABC | 01FK |
| 02 | BCA | 01FK |
| 03 | 出租车 | 02FK |
| 04 | XYZ | 03FK |
| 05 | yzx | 02FK |
我想生成一个新表,其中 FK 为主表,其余列基于 FK 合并。所以最终结果看起来像这样:
| 氟肯 | 姓名 |
|---|---|
| 01FK | 美国广播公司、英国广播公司 |
| 02FK | 驾驶室,yzx |
| 03FK | XYZ |
我有一个场景,如果部分单词与另一列匹配,则从一组逗号分隔的字符串中替换整个字符串。
我发现用文字解释非常复杂,因此我通过包含各种示例的屏幕截图进行了解释。
请帮助我使用存储过程或函数或查询来获取所需结果列中的结果,如下面的屏幕截图所示。
我尝试使用STRING_SPLIT函数来分割值并连接表。我对解决这个问题的逻辑感到震惊。
下面的两个会话尝试更新同一行的场景由 Paul White 提供。
场景一:
- 会话 1
U在读取时获取基表行的锁。- 会话 2 阻塞,等待获取
U基表中的同一行。- 会话 1 将值设置为 10 并提交。
- 会话 2 获取了它的
U锁并且发现没有什么可做的,因为现在 Value != 0。结果:值设置为 10。
根据 Paul 的说法,会话 2 已经找到了需要更新的行,但它被阻止了。当阻塞消失并且会话 2 获得 U 锁时,它需要再次检查条件吗?我理解正确吗?对我来说这有点奇怪。会话找到了这一行,这是因为它评估了导致识别该行的过滤器。为什么在实际更新之前需要再次检查条件?
我的桌子是这样的:
CREATE TABLE [dbo].[ClosedTaskCustomFields](
[ClosedTaskId] [uniqueidentifier] NOT NULL,
[CustomFieldId] [uniqueidentifier] NOT NULL,
[Value] [nvarchar](450) NULL
...
CONSTRAINT [PK_ClosedTaskCustomFields] PRIMARY KEY CLUSTERED
(
[ClosedTaskId] ASC,
[CustomFieldId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)
我也有这样的索引用于连接 ClosedTask 表:
CREATE NONCLUSTERED INDEX [IX_ClosedTaskCustomFields_ClosedTaskId] ON [dbo].[ClosedTaskCustomFields]
(
[ClosedTaskId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, …Run Code Online (Sandbox Code Playgroud)