2010-03-20 59 views

回答

27

如果您的查询看起来像foo LIKE 'abc%'foo LIKE 'abc%def%',MySQL可以使用索引。它可以在第一个通配符之前使用任何部分或字符串的索引。如果您需要在字符串中的任何位置匹配单词,则可能需要考虑使用FULLTEXT索引。

索引上的更多细节:http://dev.mysql.com/doc/refman/5.1/en/mysql-indexes.html

全文搜索:http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html

+0

基本上,如果你使用索引B +树索引中的列,这是不够的。自动MySql更快地搜索LIKE查询 – Antony 2011-12-07 11:53:55

4

好,最简单的优化将有一个恒定的前缀(例如的替代"test%""%test""%test%"),因为这将让发动机来缩小指数使用的搜索空间。但是,这在所有情况下都是不可能的。

有时预处理步骤可以将通配符搜索转换为普通的相等或全文搜索。通过找到构建数据的方法,您可以获得更多收益,因此不需要通配符搜索就可以优化后者。