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