0
我有一张约20列的表格。其中10个通常倾向于有15个左右的值中的1个(每列不同)。另外,一列有一个较大的字符串。该表目前有超过300万行,并在不断增长。它大约是1GB大(只是数据)MySQL表格拆分
- 我想拆分大文本列,因为它不经常使用,并可能会大大减少表大小,从而提高性能。
- 我想将所有那些重复的列“归一化”到一个单独的表格(每个表格)中,以便我可以在不对3M行执行10
distinct
查询的情况下获取当前值的列表。这需要很长时间。
#2将是一对多关系。 #1可以是1对1或1对多。我不在乎。
问题是:这些可以通过纯SQL语句完成吗?怎么样?或者,我是否需要编写一个程序将数据放入新表中,并获取PK并将其插入右侧一列中的一列?
编辑
这里是什么,我试图做一个样本:
ID Field1 Lookup Text
10 val1 look1 some very long text
11 val2 look2 more very long text
12 val2 look1 NULL
13 val4 look1 some very long text
.
.
.
要这样:
ID Field1 Lookup Text
10 val1 1 1
11 val2 2 2
12 val2 1 0
13 val4 1 4 (1?)
.
.
.
我添加了一个例子 – baruch 2012-02-23 13:28:01
我根据你的例子编辑了我的答案。请注意,对于3M行,alter语句可能需要一些时间。 – rlanvin 2012-02-23 13:43:25