我有一些自动生成的 T-SQL,这可能是有效的,但我不太明白。
ALTER TABLE [dbo].[MyTable]
WITH CHECK
CHECK CONSTRAINT [My_FORIEGN_KEY];
Run Code Online (Sandbox Code Playgroud)
我知道什么是外键约束,但什么是外键约束CHECK CHECK
?
我有一个简单的SELECT
声明。
USE [AdventureWorks2014]
GO
SELECT *
FROM Sales.SalesOrderDetail sod
Run Code Online (Sandbox Code Playgroud)
执行计划有两个Compute Scalar
.
为什么是这样?我原以为只得到
Index Scan
或者Table Scan
?
第一个(最右边的)有
[[AdventureWorks2014].[Sales].[SalesOrderDetail].LineTotal] = Scalar Operator(isnull(CONVERT_IMPLICIT(numeric(19,4),[AdventureWorks2014].[Sales].[SalesOrderDetail].[UnitPrice] as [sod].[UnitPrice],0)*((1.0)-CONVERT_IMPLICIT(numeric(19,4),[AdventureWorks2014].[Sales].[SalesOrderDetail].[UnitPriceDiscount] as [sod].[UnitPriceDiscount],0))*CONVERT_IMPLICIT(numeric(5,0),[AdventureWorks2014].[Sales].[SalesOrderDetail].[OrderQty] as [sod].[OrderQty],0),(0.000000)))
Run Code Online (Sandbox Code Playgroud)
当第二个有:
[[sod].LineTotal] = Scalar Operator([AdventureWorks2014].[Sales].[SalesOrderDetail].[LineTotal] as [sod].[LineTotal])
Run Code Online (Sandbox Code Playgroud) 如果我的OPTIMIZE FOR UNKNOWN
存储过程中有一个,我是否能够看到数据库确定的最佳值?
performance sql-server stored-procedures optimization plan-cache
SqlDbType.Structured
将数据发送到 sproc 中的 Table 参数时,类型的行数\总大小是否有上限?
我找不到任何建议,所以我假设如果发送了一个巨大的数据集,只会有一个超时。
我正在查看 2000 行,所以没什么可怕的。我只是想抢占任何潜在的爆炸。
我有以下查询来获取与最新日期对应的值:
SELECT MAX(RowAddedDate), X, Y
FROM dbo.MyTable
GROUP BY X, Y
Run Code Online (Sandbox Code Playgroud)
这很好,但我需要获取此查询中每一行的 ID。如果我添加 ID,我会得到所有内容,因为 ID 需要在GROUP BY
.
我该如何解决这个问题?
我发现exec(sql)
代码中隐藏了一些语句。它们存在是有充分理由的,因为这些语句不能直接编写,但它们是一个明显的攻击媒介。
有没有安全的替代品exec(some sql)
?将正确参数化的东西,包括语句中的表名?
我试图用大量虚拟数据填充表,以便我可以进行优化等。
我有以下几点:
WHILE @RowCount < 3000000
BEGIN
SELECT @Random = ROUND(@Upper * RAND(), 0)
INSERT INTO [dbo].[Test]
([Id]
,[OtherKey]
,[Description])
VALUES
(@RowCount
,@Random
,CAST(@Random AS VARCHAR(max)))
SET @RowCount = @RowCount + 1
END
Run Code Online (Sandbox Code Playgroud)
然而,这似乎很慢。
有没有更好的方法来自动将半随机行加载到数据库表中?
这个似乎很快:
USE [Test]
GO
/****** Object: Table [dbo].[Test] Script Date: 17/10/2016 21:22:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
USE [Test]
GO
CREATE TABLE [dbo].[Test](
[Id] [int] NOT NULL,
[OtherKey] [int] NOT NULL,
[Description] [varchar](max) NOT NULL,
[Time] [datetime] NOT NULL
) …
Run Code Online (Sandbox Code Playgroud) 我有一系列代表 start ( S
) 或 and ( E
) 的行thing
+----+-------+-------+
| Id | Event | Thing |
+----+-------+-------+
| 1 | S | A |
| 2 | E | A |
| 3 | S | B |
| 4 | E | B |
| 5 | S | C |
| 6 | S | D |
| 7 | S | E |
+----+-------+-------+
Run Code Online (Sandbox Code Playgroud)
我正在尝试获取没有结束事件的行。
SELECT [a].[Id] AS [ID a],
[a].[Event] AS [Event …
Run Code Online (Sandbox Code Playgroud) sql-server ×7
t-sql ×4
optimization ×3
performance ×3
ado.net ×1
aggregate ×1
bulk-insert ×1
constraint ×1
dynamic-sql ×1
plan-cache ×1
security ×1