2

我正在使用我在其他地方下载的表格,他们放置了一个名为的列DATA_SOURCE,它将记录的所有不同数据源连接起来,如下所示:

sourceA; sourceB; sourceC; ...

因此,如果我要查找来自 的记录sourceB,我将不得不在 上进行类似搜索%sourceB%

这显然是一个耗时的查询。我的问题是,如果我要索引 column DATA_SOURCE,它会提高这些通配符之类的搜索的性能吗?或者它不会有所作为。

4

1 回答 1

6

不会。索引用于类似搜索,但前提是搜索标准以通配符开头。

所以LIKE 'Albert %'将是可索引的,而LIKE '%Einstein%'不会。

这样做的原因当然是索引所做的所有事情都是构建一个内部表,当按该列排序时结果在哪里,以将搜索从线性复杂度降低到对数复杂度。如果搜索标准以通配符开头,它仍然必须遍历所有可能的值以匹配它们(所谓的表扫描),从而消除索引的潜在性能增益。

于 2013-05-27T16:48:38.927 回答