gpt4 book ai didi

sql - 为什么 like-operator 这么快

转载 作者:搜寻专家 更新时间:2023-10-30 19:48:13 24 4
gpt4 key购买 nike

大家都知道sql中的like运算符。例如:

select * 
from customer
where email like '%goog%'

所以我的问题是数据库怎么能这么快返回结果呢?当我应该编写这样的功能时,我会遍历所有客户和每封电子邮件。但这非常慢。我听说过索引。当数据库不知道第一个或最后一个字母是哪个时,数据库如何使用索引?或者他们有其他方法吗?

我不想编写这样的程序。我只想知道它是如何工作的。

最佳答案

我不知道你使用的是什么引擎,也不知道它的实际引擎盖下是什么,但这里有一些关于这个问题的有用信息:

  1. 通常,SQL 引擎会在列内使用自由文本搜索,以便能够更快速地提取此类查询。这是通过创建一个 inverted index 来完成的。 ,从每个单词映射到包含它们的“文档”(行,列)。一个广泛使用的库是 Apache Lucene .不幸的是,大多数 IR(信息检索)库在查询的开头不支持通配符(但它们在其他任何地方都支持),因此无法在此类索引中搜索您的特定示例。
  2. 您可以通过使用 Suffix Tree 创建索引以支持索引开头的通配符.后缀树非常适合搜索子字符串,就像您的示例一样。但是,它们并未针对搜索中间带有通配符的字符串进行优化。

关于sql - 为什么 like-operator 这么快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27166155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com