0

60 個のブール値 (TINYINT(1)) の検索可能な列を持つテーブルがあります。ユーザーは、指定された列の任意のサブセットを検索条件として使用できます。それに基づいて、自分のニーズに合った適切なインデックスを作成できません。検索可能な列を連結する BIT(60) 型の別の列 (concat_col) を作成できるかどうか疑問に思っていました。

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

その後、(concat_col で) 適切なインデックスを作成できますが、問題が 1 つあります。クエリを作成するにはどうすればよいですか?

疑似コードで書かれたこの例を見てください:

標準バージョン (これは明らかに問題なく動作します):

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 に答える