SQL Server 帮助表?

Roy*_*mir 5 sql-server-2008 sql-server

如果我在 SQL Server 中编写:

SELECT number FROM master..spt_values WHERE Type = 'P' ORDER BY Number
Run Code Online (Sandbox Code Playgroud)

我得到了一个我已经可以使用的序列号列表,而不是用序列号写一个表格。

这对于小连接、行编号等非常有帮助。

我想知道是否还有其他像这样的隐藏表也可以帮助我做其他事情?例如,我可能想要select someNonImportantTextColmn from master..unknown并应用我的功能。

我在哪里可以找到这些“帮助表”的完整列表?

Aar*_*and 5

spt_values不完全是供您使用的帮助表。它是一个未记录的系统表,由内部存储过程用于各种任务。

由于它既不包含唯一的也不包含连续的数字,并且因为它没有记录且不受支持(并且可能在未来的版本中完全消失),我强烈建议您不要将此表用于任何事情。

您可以随时生成基于序列row_number从文档和支持系统的观点,比如sys.all_objectssys.all_columns或跨两个加入,如果你需要一个很大的数字。

或者只是建立一个Numbers表格并为自己存储数字。在大多数情况下,这可能更有效,因为如果使用得足够多,它将始终在内存中访问,而无需计算序列。