mysql – FULLTEXT和FULLTEXT KEY / INDEX有什么区别?
作者:互联网
MySQL文档提供了这种格式来创建FULLTEXT索引:
| {FULLTEXT|SPATIAL} [INDEX|KEY] [index_name] (index_col_name,…)
[index_option]
要使用MySQL实现全文搜索,您可以通过编写来创建索引:
CREATE TABLE posts (
id int(4) NOT NULL AUTO_INCREMENT,
title varchar(255) NOT NULL,
content text,
PRIMARY KEY (id),
FULLTEXT (title, content)
) ENGINE=MyISAM;
要么
CREATE TABLE posts (
id int(4) NOT NULL AUTO_INCREMENT,
title varchar(255) NOT NULL,
content text,
PRIMARY KEY (id),
FULLTEXT KEY my_index_name (title, content)
) ENGINE=MyISAM;
my_index_name是用户定义的名称而不是字段名称.
>他们之间有什么区别?
>系统本身和开发人员是否有任何后果?
我无法在文档中找到任何线索:
> http://dev.mysql.com/doc/refman/5.0/en/fulltext-natural-language.html
> http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html
解决方法:
省略索引名称
如果添加索引/键
对于表,MySQL将在指定的列(列集)上存储其他信息以加快搜索速度.
在您的第一个示例中,MySQL将生成一个索引并为其命名
my_index_name.如果省略名称,MySQL将为您选择一个.我找不到关于如何选择名称的文档,但根据我的经验,第一列的名称通常被重用作索引名称.
对于本部分讨论,全文选项无关紧要.它只定义了您要创建的索引/键的类型:
You can create special FULLTEXT indexes, which are used for full-text searches.
省略index / key关键字
仅提供全文就足够了:
| {FULLTEXT|SPATIAL} [INDEX|KEY] [index_name] (index_col_name,…)
[index_option] …
但是使用全文索引表格可能是一个好主意,因为读者会被提醒索引.
index和key是同义词
请注意,索引和键之间没有区别(请参阅create table):
KEY is normally a synonym for INDEX. The key attribute PRIMARY KEY can also be specified as just KEY when given in a column definition. This was implemented for compatibility with other database systems.
例
use test;
create table u (
id int primary key,
a varchar(10),
b varchar(10),
fulltext index (a, b)
);
show index from u;
将打印(我已从此输出中省略了主索引以及一些
附加栏目):
table key_name seq_in_index column_name
u a 1 a
u a 2 b
例如,如果要删除它,则需要索引名称:
alter table u
drop index a;
参考
>您可以在create index和create table找到相关文档.
>有关更多信息,请访问:http://dev.mysql.com/doc/refman/5.0/en/index-hints.html
标签:mysql,full-text-indexing 来源: https://codeday.me/bug/20190623/1275204.html