text
列を持つテーブルを作成する場合
CREATE TABLE foo ( bar text );
bar
列にインデックスを付けることができません。
MariaDB [test]> CREATE INDEX foo_bar_idx ON foo ( bar );
ERROR 1170 (42000): BLOB/TEXT column 'bar' used in key specification without a key length
もし私が HELP CREATE INDEX
、なるほど、
Syntax:
CREATE [ONLINE|OFFLINE] [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
[index_type]
ON tbl_name (index_col_name,...)
[index_option] ...
index_col_name:
col_name [(length)] [ASC | DESC]
index_type:
USING {BTREE | HASH}
index_option:
KEY_BLOCK_SIZE [=] value
| index_type
| WITH PARSER parser_name
| COMMENT 'string';
KEY_LENGTH
言及されていないKEY_BLOCK_SIZE
、しかしそれをオプションとして使用すると、
MariaDB [test]> CREATE INDEX foo_bar_idx ON foo ( bar ) KEY_LENGTH = 5;
ERROR 1911 (HY000): Unknown option 'KEY_LENGTH'
MySQLでは、キー長がタイプ修飾子として追加され、かっこcolname()
に配置されます。このようにCREATE INDEX
に提供できます。
CREATE INDEX foo_bar_idx ON foo ( bar(500) );
これはindex_col_name
の一部です(テキストではオプションではないため、[]
は無視してください)。
index_col_name:
col_name [(length)] [ASC | DESC]
あるいは、MATCH
機能を提供する代わりに、全文検索(FTS)インデックスが必要な場合があります。
CREATE FULLTEXT INDEX foo_bar_ftsidx ON foo ( bar );
詳細については、 全文検索に関するMySQLのドキュメント を参照してください。