具有 80% 文本数据类型和 140 列的表在表扫描中需要花费大量时间,这会减慢查询速度



我有一个包含 100 列的表,其中 80% 列nvarchar(max),无法更改此数据类型,因为我从 MySQLtext类型列获取此数据。此表包含近 30lacs 记录,因此当我选择所有列时,显示记录集需要太多时间。在这种情况下,我有兴趣将此表更改为column store表,但列存储不支持nvarchar(max)数据类型,现在我正在寻找如何设计此表的方法,这将有助于快速查询。

请注意,我已经尝试按不同列进行非聚集索引,这也没有影响 makig 查询快速。 任何帮助将不胜感激

为什么不只使用两个表? 如果将原始表作为主键,请将新表定义为:

create table t_text (
original_id int primary key,
value nvarchar(max),
foreign key (id) references original_table(original_id)
);

然后,当您要使用该列时,您将加入此表。

要插入或更新表,可以定义包含文本值的视图。 使用视图上的触发器,您可以将更新定向到正确的表。

你真正想要的是垂直分区 - 能够在单独的分区中存储列。 这是一种手动实现的方法。

最新更新