如何使用多个可搜索列有效地搜索MySQL数据库?

时间:2013-06-20 08:30:21

标签: mysql sql database mysqli indexing

我有一个包含60个布尔(TINYINT(1))可搜索列的表。用户可以使用给定列的任何子集作为搜索条件。基于此我无法为我的需求创建一个好的索引。我想知道我是否可以创建另一个类型为BIT(60)的列(concat_col),它将是可搜索列的串联,即

Table_A:
id   |col1|col2|...|col60|concat_col
9999 | 1  | 0  |...|  1  |10...1

然后我可以为它创建一个好的索引(在concat_col上)但是有一个问题 - 如何为它创建查询?

请参阅以伪代码编写的此示例:

标准版(这显然可以正常工作):

SQL = SELECT * FROM Table_A WHERE col1=1 AND col60=1 

我的版本(' *'是通配符,因为它不是' 1'不是' 0'):

SQL = SELECT * FROM Table_a WHERE concat_col = '1*...1'    

是否有可能有效地解决这个问题?非常感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

尝试:

SQL = SELECT * FROM Table_a WHERE concat_col REGEXP '^1[0-9a-zA-Z]{58}1$'