为表创建其他格式

问题描述 投票:0回答:3

我有一个包含500多个列的表,该表由用户动态创建和命名。用户可以创建新列,但不能删除任何新列。

我承担了编写关键字搜索的任务,该关键字搜索将在所有列中搜索特定的字符串,并返回该记录的ID。可以想象,查询当前看起来像:

SELECT form_id FROM table_name WHERE col1 LIKE '%str%' OR col2 LIKE '%str%' or col3 LIKE '%str%'.. etc.

令人难以置信的缓慢。为了解决这个问题,我正在尝试创建另一个表,该表中的数据以这种不同的格式存储:

form_id, col_name, value

1, 'col2', 'some random value'
1, 'col1', 'another random value'

然后使用搜索:

SELECT id FROM new_table_name WHERE value LIKE '%str%'

我可以导出所有数据并将其格式化,然后将其插入新表中。但是我将如何保持新表的更新呢?修改原始表后,是否可能会有触发器自动插入/更新新表?即使我之前都不知道列名?

sql sql-server
3个回答
0
投票

您可以通过取消旋转原始表来构造表:


0
投票

似乎您正在寻找EAV模型。


0
投票

另一个有趣的选项

© www.soinside.com 2019 - 2024. All rights reserved.