【发布时间】:2011-01-03 18:39:40
【问题描述】:
我有一个 MySQL 表,我经常对其进行SELECT x, y, z FROM table WHERE x LIKE '%text%' OR y LIKE '%text%' OR z LIKE '%text%' 查询。任何类型的索引都有助于加快速度吗?
表中有几百万条记录。如果有什么可以加快搜索速度,它会严重影响数据库文件的磁盘使用率以及INSERT 和DELETE 语句的速度吗? (从未执行过UPDATE)
更新:发帖后很快看到很多关于LIKE在查询中的使用方式的信息和讨论;我想指出,解决方案必须使用LIKE '%text%'(也就是说,我要查找的文本前面加上了% 通配符)。出于多种原因,包括安全性,数据库也必须是本地的。
【问题讨论】:
-
这样想并不是一个完美的类比,但它证明了这一点。考虑一本背面有单词索引的书。如果您想查找一个简单的单词,甚至是以相同的前几个字母开头的单词,没问题。考虑一下当您想使用该书籍索引来查找单词中任何位置包含字母“exe”的所有单词时会发生什么。该索引几乎没有用,您不妨阅读实际的书来寻找这些词。这大致就是您对 mySQL 施加的问题。