Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在使用我在其他地方下载的表格,他们放置了一个名为的列DATA_SOURCE,它将记录的所有不同数据源连接起来,如下所示:
DATA_SOURCE
sourceA; sourceB; sourceC; ...
因此,如果我要查找来自 的记录sourceB,我将不得不在 上进行类似搜索%sourceB%。
sourceB
%sourceB%
这显然是一个耗时的查询。我的问题是,如果我要索引 column DATA_SOURCE,它会提高这些通配符之类的搜索的性能吗?或者它不会有所作为。
不会。索引将用于类似搜索,但前提是搜索标准不以通配符开头。
所以LIKE 'Albert %'将是可索引的,而LIKE '%Einstein%'不会。
LIKE 'Albert %'
LIKE '%Einstein%'
这样做的原因当然是索引所做的所有事情都是构建一个内部表,当按该列排序时结果在哪里,以将搜索从线性复杂度降低到对数复杂度。如果搜索标准以通配符开头,它仍然必须遍历所有可能的值以匹配它们(所谓的表扫描),从而消除索引的潜在性能增益。