我有一张表,其中每秒添加3行数据,并且我打算保留大约30M行。 (旧数据将被删除)。我应该为重复值(varchar)使用单独的表吗?
我需要添加一列:varchar(1000)。我无法预先知道它的内容是什么,但我确实知道它会是非常重复的:数千行到数百万行将具有相同的值。它通常大约200个字符长。
由于数据被使用存储过程我看到两个选项
- 添加一列VARCHAR(1000)
- 创建一个表(INT ID,VARCHAR(1000)值) 内StoredProcedure的加入,查看该值是否存在于其他表中或创建它 我希望这个其他表始终具有最大值100。
我知道这两个选项之间的一些折衷,但我很难在这个问题上下定决心。
选项1较重,但我得到更快的插入。需要更少的连接,因此查询更简单。 选项2较轻插入需要很长时间,但查询有可能会更快。我认为我更接近正常的形式,但是我也有一个有一个有意义的列的表。
从我给你的信息看,哪个选项好看? (你也可以想出另一种选择)。
这个新列中会有很多NULL值吗?您是否需要根据此列的内容搜索大型表格?另外,表格已经有多少个字符? – Sparky
你正在使用哪个版本的Microsoft SQL(由tSQL标签假设)? – Sparky
我期待大约20%的NULL值。我可能需要根据本专栏的内容进行一些搜索,但大部分时间范围将被索引列减少到大约10万行。每个条目大约200个字符。 – Benoittr