ALTER TABLE テーブル名 ADD INDEX インデックス名 (カラムA, カラムB);
ALTER TABLE テーブル名 ADD UNIQUE INDEX インデックス名 (カラムA, カラムB);
※MySQL等テーブルのオプションコンポーネントの場合
CREATE INDEX インデックス名 ON テーブル名(カラムA, カラムB);
CREATE UNIQUE INDEX インデックス名 ON テーブル名(カラムA, カラムB);
※Oracle等独立したスキーマオブジェクトの場合
・テーブル作成時に全文検索対象のカラムを指定
FULLTEXT (カラムA,カラムB)
・SELECT
SELECT
*
FROM
articles
WHERE
MATCH (カラムA,カラムB) AGAINST ('検索文言' IN NATURAL LANGUAGE MODE);
・全文検索モード
IN NATURAL LANGUAGE MODE: AGAINST ('検索文言' IN NATURAL LANGUAGE MODE)
※デフォルト
IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION
※2回検索される(1回目はデフォルトと同じ検索、2回目はQUERY EXPANSION)
IN BOOLEAN MODE: AGAINST ('+検索文言1 -除外文言 検索文言2' IN BOOLEAN MODE)
※検索文言2はOR検索
※AND検索の場合は'+検索文言1 +検索文言2'
WITH QUERY EXPANSION: 短い検索文言を元に意味を拡張して関連する文言もヒットさせる
※データを入れた後にインデックスを作成するのが速い
※パーティションテーブルではサポートされていない
※組み込みのフルテキストパーサーは日本語は単語がどこから始まりどこで終わるかを判別できない(単語間の空白がない)
※日本語にはフルテキストngramパーサーかMeCabフルテキストパーサープラグインが必要
※MySQLの全文検索機能には、ユーザーが調整できるパラメーターがほとんどない
※通常は全文検索エンジンを使う