我可能心胸狭窄,但是如果我创建了一个外键约束并且一行被更新或删除,如果子表的列被设置为 NULL,我将失去该连接。
故意保留这些孤立行的目的是什么?
我意识到这可能被标记为重复,但我特别询问 SQL Server 2005
我在互联网上阅读了相互矛盾的建议,所以我在这里问。特别是在 SQL Server 2005 中,varchar 列中的 NULL 是否与空字符串占用相同的空间?
我在另一个驱动器上构建了一个“持有”表,并用源表中的数据填充它,并且在字段为nullif([field],'')空的地方,我曾经插入空值来代替空值。
然后我构建了一个与保存表结构完全相同的新表,但我没有用 null 替换空白,而是插入了空白,到目前为止它似乎占用了更多空间(我还没有完成填充它和我无法确定它是否正在占用更多数据)
所以在我进一步填充它并最终得到一个比我想象的更大的表格之前,我最好插入空值还是空白?
编辑:
将数据从持有表迁移到新表后,新表大约大了 4gb。
表设计中只有两个小的差异 - 'serial_number' 字段在保持表中是 char(15) 而在目标表中是 varchar(15)。(序列号的最大长度是 14 并且有很多空值——如果我记得的话,我想大约是 3000 万),并且持有表的聚集索引有一个额外的列 - program_name..
拿着桌
USE [Temp_holding_EWS]
GO
/****** Object: Table [dbo].[AmtoteAccountActivity_holding]
Script Date: 02/17/2017 20:41:32 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[AmtoteAccountActivity_holding](
[_Date] [char](8) NULL,[Community] [varchar](10) NULL,
[AccountNumber] [varchar](50) NULL,
[Branch] [varchar](10) NULL,
[Window] [varchar](3) NULL,
[Time] …Run Code Online (Sandbox Code Playgroud) 我正在设计一个在MySQL中使用的关系数据库。我有下一种情况:在一个表中,有些字段在大多数情况下都是NULL. 这些字段将类似于:
Table name: tabla
Fields:
idtabla not null,
text (varchar(n)) not null,
image (mediumblob) {this can be null}
Run Code Online (Sandbox Code Playgroud)
疑问:是否最好创建另一个表,当需要使用图像时,查询新表?为什么您的解决方案更适合设计?MySQL的时间响应、查询的便捷性等?
mysql performance null database-design relational-theory query-performance
上下文:MS SQL Server 2012
在使用 Kendra Little 的强大工具 sp_BlitzIndex 时,许多表被诊断为“索引囤积者:沉迷于空值”。
我不是在寻找关于 NULL 及其位置的辩论。我知道在某些情况下 NULL 非常合适,甚至是必要的。这里的问题是 sp_BlitzIndex 提供的反馈,以及强制执行 not NULL 约束的值。
在 sp_BlitzIndex 被“诊断”为具有许多允许 NULL 的列的大多数表中,没有任何实际的 NULL 值。我们以编程方式不允许它们。我只是从未取消选中“允许空值”框以在数据库级别强制执行该约束。
强制执行此约束有什么好处,为什么它是她的脚本确定的问题之一?
谢谢!