Py学习  »  DATABASE

定义MySQL索引

Petras • 6 年前 • 1620 次点击  
  1. 什么是索引?
  2. 什么是全文?

我知道这两个问题的答案,但我不能准确地向面试官透露这些答案:

  • 索引的意思类似于书中的索引。
  • 全文表示搜索字符串

请给我每个问题的简单定义好吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/30350
文章 [ 3 ]  |  最新文章 6 年前
kiwicptn
Reply   •   1 楼
kiwicptn    15 年前
  1. 索引意味着,与正在索引的数据一起,有一种以有效方式获取数据的方法。这个快捷方式是一个B-树。索引列的读取速度更快(已经解释过),但写入速度较慢,因为必须更新B树。
Alex Weinstein
Reply   •   2 楼
Alex Weinstein    15 年前

标引 ,是创建索引的过程。索引是允许SQL(或更通常是DBMS或搜索引擎)定位的结构, 以非常有效的方式 ,基于其中一个(或多个)字段的值的记录。

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


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

例如,书目数据库可能包含描述书籍的记录,其中包含ISBN、作者、标题、类型、价格等字段。一个全文索引(有时称为“目录”)上的字段标题,将允许有效地定位,书名为“老人和海洋”时,说“人”。

全文引擎通常具有与文本相关的语言概念的内置和可参数化“理解”。例如,“干扰词”(也称为“停止词”)是文本中经常出现的词(例如英语中的“the”、“and”、“of”、“in”),为了最小化索引大小并使使用更具选择性的词的搜索更有效,可以忽略。此外,全文引擎还可以了解单词的各种语法形式,比如单词的单数和复数形式(比如英寸和英寸、脚和脚、猫和猫),或者动词的连词(比如catch、catch和catch,或者口译、口译、口译)。得益于这种语法意识,全文引擎可以(如果如此指示)定位单词,即使它们不完全匹配搜索条件。
全文引擎通常还公开搜索语言/语法,允许用户指定所需搜索的特定元素。例如,在“人”的5个字内搜索“海”。或者找到“湖”或“海”以及“水”等词。

James
Reply   •   3 楼
James    15 年前

MySQL中的索引是从一列中的每个值(或一组列中的值)到该列中包含该值的行(或该组列中的值)的映射。

列上的全文索引是从每个单词(通常用空格分隔)到包含该单词的行集的映射。

正常指数: 身份证:1“吧” 身份证:2“福奥巴兹”

搜索“foo”-无结果。 搜索“foo baz”->行,ID:2 搜索“栏”->ID为1的行

全文索引: 身份证:1“吧” 身份证:2“福奥巴兹”

搜索“foo”->行,ID:2 搜索“foo baz”->行,ID:2 搜索“栏”->ID为1的行