数据库
首页 > 数据库> > mysql – FULLTEXT和FULLTEXT KEY / INDEX有什么区别?

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 indexcreate table找到相关文档.
>有关更多信息,请访问:http://dev.mysql.com/doc/refman/5.0/en/index-hints.html

标签:mysql,full-text-indexing
来源: https://codeday.me/bug/20190623/1275204.html