0

我有一个包含 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'    

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

4

1 回答 1

0

尝试:

SQL = SELECT * FROM Table_a WHERE concat_col REGEXP '^1[0-9a-zA-Z]{58}1$'
于 2013-06-20T08:40:54.543 回答