首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么列上的函数阻止索引的使用?

为什么列上的函数阻止索引的使用?
EN

Stack Overflow用户
提问于 2016-06-20 16:05:44
回答 4查看 1K关注 0票数 2

在我前几天问的this question上,我得到了以下评论。

在几乎任何数据库中,列上的几乎任何函数都会阻止索引的使用。这里和那里都有例外,但总的来说,函数阻止了索引的使用。

我搜索了一下,发现了更多关于这种行为的信息,但是我很难找到比评论告诉我更深入的东西。

有人能详细说明为什么会发生这种情况吗?也许是避免这种情况的策略?

EN

Stack Overflow用户

回答已采纳

发布于 2016-06-20 16:17:52

索引最基本的形式就是排序的列数据,这样就很容易通过一些值来查找。例如,教科书可以按一定顺序排列页面,但在后面为所有术语设置索引。如您所见,数据是预先计算/排序的,并存储在单独的区域中。

当您将函数应用到列并尝试根据输出匹配/筛选时,索引将不再有用。让我们再看一看我们的书中的示例,并说我们正在应用的函数与术语相反(因此reverse('integral')变成了'largetni')。您将在索引中找不到这个值,所以您必须接受所有的术语,将它们放在函数中,然后再进行比较。都是在查询时间。最初,我们可以跳过对i的搜索,然后跳过in,然后跳过int等等,这样就很容易找到这个词,因此函数使一切变得更慢。

如果经常使用此函数进行查询,则可以提前使用reverse(term)创建索引,以加快查找速度。但如果不明确地这样做,它将永远是缓慢的。

票数 3
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37927069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档