【发布时间】:2014-11-06 07:42:29
【问题描述】:
我需要一个 mysql 查询来进行姓名和姓氏的文本搜索...这是查询:
SELECT * FROM people WHERE CONCAT(name,' ',surname) like 'John%'
or CONCAT(name,' ',surname) like '% John%'; --mind the space in second like
这个查询应该找到“John Fox”和“Fox John”和“John Fox Joe”和“Joe John Fox”等等。
这很好用,但对于大表,我认为我应该添加和索引......我对吗?
我读到 btree 索引仅对 like 'John%' 语法有用,对 like '% John%' 无效。因此,为新索引添加由 CONCAT(name,' ',surname) 组成的新列可能没有用处。
我想知道解决这个文本搜索问题的最佳方法是什么。
PS:我使用的是innodb表,所以不能使用全文索引。
【问题讨论】:
标签: mysql sql indexing text-search