私が映画のテーブルを持っているとしましょう:
+------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------------------+------+-----+---------+----------------+
| id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| title | tinytext | YES | | NULL | |
| synopsis | synopsis | YES | | NULL | |
| year | int(4) | YES | | NULL | |
| ISBN | varchar(13) | YES | | NULL | |
| category | tinytext | YES | | NULL | |
| author | tinytext | YES | | NULL | |
| theme | tinytext | YES | | NULL | |
| edition | int(2) | YES | | NULL | |
| search | text | YES | | NULL | |
+------------+---------------------+------+-----+---------+----------------+
この例でsearch
は、テーブルの要約として列を使用しています。したがって、可能なレコードは次のようになります。
+------------+-------------------------------------------------------------+
| Field | Value |
+------------+-------------------------------------------------------------+
| id | 1 |
| title | Awesome Book |
| synopsis | This is a cool book with a cool history |
| year | 2013 |
| ISBN | 1234567890123 |
| category | Horror |
| author | John Doe |
| theme | Programmer goes insane |
| edition | 2nd |
| search | 2013 horror john doe awesome book this is a cool book (...) |
+------------+---------------------+------+-----+---------+----------------+
この列search
は、検索が行われたときにスキャンされた列になります。他のフィールドのすべての単語(小文字)と、検索に役立つ追加の単語が含まれていることに注意してください。
私はそれについて2つの質問があります:
1)この列はテキストフィールドであり、非常に大きくなる可能性があることを知っているので、インデックスを作成しても大丈夫ですか?期待どおりにパフォーマンスが向上しますか?なんで?
2)インデックスにもかかわらず、このメソッドを使用して検索するのは良い考えですか、それともクエリのすべての列を試す方が良いですか?どうすれば改善できますか?
OBS:私は実際にはこのテーブルを持っていません、それは単なる例の目的のためです。私が行った可能性のあるデータ型または構文のエラーは無視してください。