2009-04-18 10 views
11

私はTEXT列をMySQL DBに持っています。アプリはブログのようで、colには「投稿」の本文が含まれています。私はこの列に複雑なブール検索をたくさんしていきます。MySQLのテキスト列のインデックスの長さはどれくらいですか?

MySQLのドキュメントでは、InnoDBテーブルの最大長が767バイトのTEXT列のインデックス長を設定する必要があるとしています。

私はそれを最大長に設定してください。それよりも少なくする方が良いですか?

答えて

16

それはあなたがそれを持つことになります。

私はあなたの質問から、あなたが想像していることは、列のインデックスができないことをすることができると思っています。従来のインデックスはフルテキストインデックスではなく、プレフィックス以外の単語や部分文字列の検索には使用できません。データベースインデックスは、正確な値または値の範囲のみを検索するために使用されます。これらは任意の一致を実行できません。

索引を使用できると仮定した場合、その長さは最短の長さにする必要があります。テーブルの内容に応じてどれくらいの時間がかかるか(たとえば、テーブルに同じプレフィックスがある行が多い場合など)、インデックスは同じインデックスエントリに入れないように、同じプレフィックスより長くする必要があります。検索する。

5

「複雑なブール検索」を実行している場合は、通常のインデックスが使用されない可能性があります。あなたはおそらくあなたがfull-text indexが必要であると思うでしょう。

-2

あなたがそのフィールドに入力しようとしている文字数によって異なります。それは時には事前に知ることが難しいので、あなただけが判断することができます。

MySQLでデフォルト(無制限)にしておくことはできませんか?

+0

いいえ、そうではありません。テキストではありません。 – User

関連する問題