Mysql
你如何索引 MySQL 中的文本列?
如果我創建一個包含一
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 Key Length 作為類型修飾符添加並放在括號中
colname()
,您可以CREATE INDEX
像這樣提供它,CREATE INDEX foo_bar_idx ON foo ( bar(500) );
它是 , 的一部分
index_col_name
(除了它在文本上不是可選的,所以忽略[]
)index_col_name: col_name [(length)] [ASC | DESC]
或者,您可能需要全文搜尋 (FTS) 索引,而不是提供
MATCH
功能CREATE FULLTEXT INDEX foo_bar_ftsidx ON foo ( bar );
有關更多資訊,請參閱全文搜尋上的 MySQL 文件