snippetsqlModerate
How do you index a text column in MySQL?
Viewed 0 times
youcolumntextmysqlhowindex
Problem
If I create a table with a
I can't index the
If I
text columnCREATE TABLE foo ( bar text );I can't index the
bar column. MariaDB [test]> CREATE INDEX foo_bar_idx ON foo ( bar );
ERROR 1170 (42000): BLOB/TEXT column 'bar' used in key specification without a key lengthIf I
HELP CREATE INDEX, I get,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 not mentioned only KEY_BLOCK_SIZE, but if I use it as an option, I getMariaDB [test]> CREATE INDEX foo_bar_idx ON foo ( bar ) KEY_LENGTH = 5;
ERROR 1911 (HY000): Unknown option 'KEY_LENGTH'Solution
In MySQL Key Length is added as a type-modifier and placed in parenthesis
It's part of
Alternatively you may want an Full Text Search (FTS) index instead providing
For more information see the MySQL docs on Full Text Search
colname(), you can provide it to CREATE INDEX like this,CREATE INDEX foo_bar_idx ON foo ( bar(500) );It's part of
index_col_name, (except it's not optional on text so ignore the [])index_col_name:
col_name [(length)] [ASC | DESC]Alternatively you may want an Full Text Search (FTS) index instead providing
MATCH functionalityCREATE FULLTEXT INDEX foo_bar_ftsidx ON foo ( bar );For more information see the MySQL docs on Full Text Search
Code Snippets
CREATE INDEX foo_bar_idx ON foo ( bar(500) );index_col_name:
col_name [(length)] [ASC | DESC]CREATE FULLTEXT INDEX foo_bar_ftsidx ON foo ( bar );Context
StackExchange Database Administrators Q#210403, answer score: 16
Revisions (0)
No revisions yet.