如何为具有30列的表创建索引,其中动态生成Select语句

时间:2011-02-11 03:26:29

标签: sql mysql database database-design plsql

我有一个包含语言翻译的表格。它有30列30种语言。

我的要求是从所有列中搜索特定单词(例如“hello”)。

我动态创建Select语句:

从语言中选择* 其中{英语=“你好” 或法语=“你好” 或德语=“你好”}

{}内的语句是动态生成的。

如果我必须索引这样的表,我该怎么做?

我是否必须为所有30列创建一个索引或为每列创建单独的30个索引?

请建议更好的选择。

3 个答案:

答案 0 :(得分:3)

你不应该有30列,你应该使用一个表,其中一列有语言名称,一列用于单词,一个id用于将30行关联在一起。然后,您只需查询WORD = 'hello'

如果绝对必须保留30列,则需要创建30个索引,并且查询的性能将比它需要的慢30倍。

答案 1 :(得分:0)

我会创建第二个包含[id,lang,value]的表,并按id和value对其进行索引。您可以设置一个视图,从中复制您正在使用的表,反之亦然,并为视图编制索引

答案 2 :(得分:0)

如果您必须拥有所有30列,则需要单独索引每列。