定义mysql索引

Bha*_*mar 4 mysql sql vocabulary

  1. 什么是索引?
  2. 什么是全文?

我知道这两个问题的答案,但我不能以准确的方式向面试官揭示这些答案:

  • 索引意味着像书中的索引
  • fulltext表示搜索字符串

请给我一个非常简单的定义来解决这些问题吗?

mjv*_*mjv 6

索引,是创建索引的过程.索引是允许SQL(或更一般地,DBMS或搜索引擎)以非常有效的方式基于它们包含的一个(或几个)字段的值来定位记录的结构.

例如,数据库可以在包含学生记录的表格中包括他们的学生ID,他们的姓名,出生日期,电话号码......通过在电话号码上创建索引,我们可以根据电话号码搜索学生.在没有索引的情况下,系统会找到相同的记录,但是通过查看每个记录并与所需的电话号码进行比较,可以进行此操作.


FullText Indexing是为一个(或多个包含文本的字段)创建索引的过程.与基于将字段的完整值(或可能是简单的正则表达式)与期望的搜索值进行比较的常规索引不同,FullText索引可以基于在字段内找到的单词来定位记录.

例如,书目数据库可能包含描述书籍的记录,包括ISBN,作者,标题,类型,价格......等字段.字段标题上的全文索引(有时称为"目录")将允许在搜索时通过说"人"这个词来有效地定位标题为"老人与海"的书.

全文引擎通常具有与文本有关的语言概念的内置和参数化"理解".例如,"噪音词"(也称为"停用词")是在文本中经常找到的词(例如"the","and","of","in",in English)可以被忽略,目的是最小化索引大小并使更具选择性的单词搜索更有效.此外,全文引擎可能会知道一个单词的各种语法形式,比如单数和复数形式的单词(如英寸和英寸,脚和脚,猫和猫),或动词的结合(如Catch,Catching)和解释或解释,口译,口译).由于这种语法意识,FullText引擎可以(如果这样指示)找到单词,即使它们与搜索条件不完全匹配.
FullText引擎通常还公开一种搜索语言/语法,允许用户指定所需搜索的特定元素.例如,在单词"man"的5个单词中搜索单词"sea".或者找到"湖"或"海洋"这个词和"水"等字样.