質問: " WHERE "; for($i=0; $i < $cnt; $i++){ $where.= "title LIKE '%".$array[$i]."%'"; if($i < $cnt-1){ $where .=" AND "; } } 以上のようにして、なんとかできました。 これを著者テーブルにも対応させたいのです。 たとえば、検索キーワードに 「太郎 物語」 と入力したとすると、 書籍テーブルか著者テーブルのいずれかに、 「太郎」および「物語」が含まれるものを表示したいのです。 つまり、 「太郎物語」というタイトルの書籍や、 「~物語」というタイトルで著者が「~太郎」という書籍などを表示するようにしたいです。 ORでつなげたりしてみたのですが、 どうもうまくいきませんでした。 また、もっとスマートなやりかたがあったら ぜひ教えてください。 どうかよろしくお願いします。
回答: LIKE、REGEXPは、テーブルのINDEXを使えないことがほとんどですので、全行検索になります。 したがって、テーブルサイズがn倍になれば、実行時間もn倍と考えていいでしょう。 RDBMSでは、これしか手はないですね。 蔵書登録時に、単語を切り出し(RDBMSとは別です)、この単語と蔵書の関連をテーブルとして登録する手はあります。単語にはINDEXを付けます。 単語への分解は、リンクを参考にしてください。 結構、骨が折れるかも・・・ 参考URL: