是否可以运行 SQL 命令来确定数据库的恢复模式?我想知道它是否完全恢复。
我有一个电子邮件应用程序,它将被要求在每个页面加载时将给定用户的新消息数量传送到 UI。我在数据库级别上测试了一些变化,但所有内容都由存储的 proc 调用抽象。
我试图猛击数据库以查看断点(每秒请求数)是什么。
简而言之,我有一个表,比如这个 userId、newMsgCount,在 userId 上有一个聚集索引。SQL 应该能够每秒处理成百上千个这样的响应。我认为落后者是我的 .NET 应用程序。
我怎样才能使这个测试成为一个很好的测试来实现基于 SQL 性能的测试结果?
有没有一个工具,我可以给它一个存储的过程名称和参数,以便它打我的数据库?
我想看看数据库是否可以返回分钟。每秒 250 个响应。
performance sql-server testing scalability performance-testing
我有一个日志表,用于捕获某些文件何时导出到另一个系统的日期时间戳。
导出的日志表目前有三个字段:
id (primary key)
messageId (int)
exportedDateTime (datetime)
Run Code Online (Sandbox Code Playgroud)
回顾这一点,我发现该id
字段没有任何用处,因为没有连接到该表。在这个表上唯一的工作是插入处理消息的批处理作业并插入到这个日志表中。
我应该删除该id
字段吗?
我是否应该在任何一个主键messageId
或exportedDateTime
或两者兼而有之?
我正在争论是否最好PRIMARY KEY
使用Identity Columns,我们使用显式生成唯一 id 的 UDF 。
ID_Value
由1
id+1
在插入时让表做一个哪个实现更有意义?
sql-server-2005 sql-server uniqueidentifier identity functions
什么是使存储过程足够健壮以使其可以很好地扩展并包含错误处理的好方法?
此外,在存储过程中处理多个错误场景并拥有一个智能反馈系统来向调用应用程序返回有意义的错误信息的最佳方法是什么?
SQL Server 如何计算查询执行结果集中记录的顺序?
我试图让它正面或反面,但发现自己挠头。当我更改字段时,我选择的顺序也会更改。当我用 a 执行下面的 SQL 时,SELECT *
我得到相同的记录,但顺序大不相同。
SELECT TOP (900)
AD.ATTACHMENTID,
AD.NAME,
AD.ISINLINE,
AD.INSERTEDDATETIME,
ATMT.ATTACHMENTBLOB,
U.UFID
FROM ATTACHMENTDETAIL AD WITH (NOLOCK)
INNER JOIN MESSAGEATTACHMENT MA ON MA.ATTACHMENTID = AD.ATTACHMENTID
INNER JOIN ATTACHMENT ATMT ON ATMT.ATTACHMENTID = AD.ATTACHMENTID
INNER JOIN MESSAGE MSG ON MSG.ID = MA.MESSAGEID
INNER JOIN MESSAGEDETAIL MD ON MD.MESSAGEID = MA.MESSAGEID
INNER JOIN [USER] U ON U.ID = MD.USERID
LEFT OUTER JOIN XmlExtractionMapping XM ON MA.MESSAGEID = XM.MessageId
WHERE AD.FILEBOXTOKEN IS NULL
AND (XM.XMLEXTRACTIONDATE …
Run Code Online (Sandbox Code Playgroud) 通常,当我看到使用以下内容的 SQL 时:
select * from employees where epmloyeeTypeId in (select id from type where name = 'emp')
Run Code Online (Sandbox Code Playgroud)
我where
用这个替换:
select e.* from employees e
inner join type t on t.id=e.epmloyeeTypeId and t.name = 'emp'
Run Code Online (Sandbox Code Playgroud)
如果它是一个not in
(如下所示)而不是一个in
子句,是否可以对逆做同样的事情?
INSERT into Subscriptions(ProjectId, RecordTypeCID, NTID, Active, Added, LastUpdate, UpdateBy)
SELECT @ProjectId, RecordTypeCID, @NTID, 1, GETDATE(), GETDATE(), @NTID
FROM @Check CHK
WHERE CHK.ActiveStatus=1
And Not Exists (SELECT SubscriptionId FROM Subscriptions
WHERE ProjectId=@ProjectId
and NTID=@NTID
and RecordTypeCID = CHK.RecordTypeCID
) …
Run Code Online (Sandbox Code Playgroud) 我刚刚创建了一个 UDF 并对其进行了测试,我发现只有在使用此语法时才有效
SELECT [PMIS].[dbo].[fnIsReportingTo] (50,1132)
Run Code Online (Sandbox Code Playgroud)
我期待它像这样工作:
select * from fnIsReportingTo (50,1132)
Run Code Online (Sandbox Code Playgroud)
或者
select fnIsReportingTo (50,1132)
Run Code Online (Sandbox Code Playgroud)
这是我的创建 SQL:
create function fnIsReportingTo
(
@BossID int,
@EmployeeID int)
RETURNs bit
AS
begin
declare @ret bit
if exists (select * from dbo.fnGetEmployeeHierarchy(@BossID) where employeeID=@employeeID)
select @ret=1
else
select @ret=0
return @ret
end
Run Code Online (Sandbox Code Playgroud) 获得多个聚合结果值的最佳或最有效方法是什么?
基本上,我有一个电子邮件应用程序,想要获取每种类型的文件夹(收件箱、已发送、已存档、已标记...)的所有邮件数量,如下定义。
这是我在一个存储过程调用中尝试做的事情的示例。(其中 [uid] 是用户 ID)
SELECT * FROM Message
Inbox WHERE [to] = [uid]
Unread WHERE [to] = [uid] and isread = 0
Flagged WHERE [to] = [uid] and isFlagged = 1
Drafts WHERE [to] = [uid] and isDraft = 1
Sent Messages WHERE [from] = [uid]
Archived Messages WHERE [to] = [uid] and isArchived = 1
Run Code Online (Sandbox Code Playgroud) 我有一个电子邮件类型的应用程序,想为用户选择所有消息(收件箱)。问题是我将电子邮件的标题部分规范化到数据库中,这样平面数据就会进入消息表,而从、到、抄送、密件抄送则存储到另一个表中。
根据 PK/ FK 关系。
我非常重视的一件事是 SQL 解决方案的效率,因为这将是多次执行的代码,并且可能是整个数据库中运行次数最多的 sql
这里的上下文是我的数据库模式的视图。
sql-server ×6
functions ×2
aggregate ×1
except ×1
identity ×1
logs ×1
order-by ×1
performance ×1
primary-key ×1
query ×1
scalability ×1
syntax ×1
testing ×1