MySQL:城市,州,国家搜索


MySQL: City, state, country search

我在生成sql查询以以下格式搜索自动完成输入的城市时遇到麻烦。提示用户输入以下格式之一:

1 -城市

2-城市,国家

3-城市,州

4-城市,州,国家

我的数据库表有以下结构

ID    City   State   Country

当前正在使用的查询是(它不工作):

SELECT * FROM destinations WHERE City LIKE '%$city%' OR Country LIKE '%$country%' OR State LIKE '%$state%'

其中$city、$country和$state是通过将搜索词从带逗号的字符串转换为不带逗号的数组获得的。这样可以更好地说明:

$query = explode(',', $term); 
$city = $query[0]; //and so on

请帮忙!我将非常感激。

更好的是全文搜索。

为什么这比%LIKE%好?

  • 更快。

它是如何工作的?

Mysql遍历文本,研究其中的单词并维护一个单独的列表-哪些单词包含相同的文本。当你搜索这个文本字段时,mysql会进入单词列表,快速检查你要找的单词是否存在,并快速返回答案。

%like%的情况下,数据库将再次解析文本(从保存文本的文件中取出文本,解密字符串并执行缓慢的字符串比较)。

全文搜索只适用于Myisam表