相关疑难解决方法(0)

SQL中常量的最佳模式?

我已经看到了几种用于"克服"SQL Server中缺少常量的模式,但它们似乎都没有满足性能和可读性/可维护性问题.

在下面的示例中,假设我们在表上有一个完整的"状态"分类,选项似乎是:

  • 只是为了硬编码,可能只是"评论"状态

-- StatusId 87 = Loaded
SELECT ... FROM [Table] WHERE StatusId = 87;
Run Code Online (Sandbox Code Playgroud)
  • 使用状态查找表,然后加入此表,以便该WHERE子句引用友好名称.

子查询:

SELECT ... 
FROM [Table] 
WHERE 
  StatusId = (SELECT StatusId FROM TableStatus WHERE StatusName = 'Loaded');
Run Code Online (Sandbox Code Playgroud)

或加入

SELECT ... 
FROM [Table] t INNER JOIN TableStatus ts On t.StatusId = ts.StatusId 
WHERE ts.StatusName = 'Loaded';
Run Code Online (Sandbox Code Playgroud)
  • 一堆标量UDF被定义为返回常量,即

CREATE Function LoadedStatus()
RETURNS INT
AS
 BEGIN
  RETURN 87
 END;
Run Code Online (Sandbox Code Playgroud)

然后

SELECT ... FROM [Table] WHERE StatusId = LoadedStatus();
Run Code Online (Sandbox Code Playgroud)

(IMO会导致数据库中出现大量污染 - 在Oracle软件包中可能没问题)

  • 使用表值函数的类似模式将常量值保存为行或列,这些都是CROSS APPLIED …

sql-server maintainability constants

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

标签 统计

constants ×1

maintainability ×1

sql-server ×1