このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/db/1299305530/941
#  DBMS : Mysql 
#   
#  説明 
#  データは10万件あると想定します。 
#  挿入する際に一つのワードを二つのカラムに大して重複チェックを行いたいです。 
#  どちらか片方にそのワードが含まれていたらcountで0を返す結果が欲しいです。 
#   
#  select count(*) from table where colA = 'ワード' OR colB = 'ワード' 
#  これだと現在2秒程度かかるので高速化したいです。 
#   
#  よろしくお願いします。 
# 
# 

'挿入する際に一つのワードを二つのカラムに大して重複チェックを行いたいです。どちらか片方にそのワードが含まれていたらcountで0を返す結果が欲しい'(_ワード,_colA,_colB) :-
        'どちらか片方にそのワードが含まれていたらcountで0を返す結果が欲しい'(_ワード,_colA,_colB),
        assertz(table(_colA,_colB)).

'どちらか片方にそのワードが含まれていたらcountで0を返す結果が欲しい'(_ワード,_colA,_colB) :-
        count((    table(_colA,_colB),
                   どちらかに片方にワードが存在(_ワード,_colA,_colB,Count)),
              0).

どちらかに片方にワードが存在(_ワード,_ワード,_) :- !.
どちらかに片方にワードが存在(_ワード,_,_ワード) :- !.