0
什么是MySQL模糊搜索的大O?它是否因索引类型而异?如果是这样,什么表现最好?MySQL模糊搜索的大O
例如SELECT * FROM foo WHERE field1 LIKE '%ello Wo%';
我不确定底层的数据类型,它拥有什么样的魔法。类似于trie(https://en.wikipedia.org/wiki/Trie)的东西对于最后模糊不清的搜索者来说是很好的,例如, LIKE 'Hello Wo%'
。
我猜Big-O是O(n)
但希望确认。模糊搜索之间甚至可能存在差异,例如, %ello Wo%
与Hello W%
对比%lo World
对%ell%o%W%or%
有没有不同的方法来提供更好的性能?如果是的话,对于特殊情况,你能分享一下吗?
全文搜索使用[排名与矢量空格](http://dev.mysql.com/doc/internals/en/full-text-search.html)。似乎大多数模糊搜索算法都是针对子线性('O(log n)'),并且在实践中运行,但理论上是'O(n)'。见例如[这篇相关的博客文章](http://ntz-develop.blogspot.se/2011/03/fuzzy-string-search.html)。 – dfri