我有一个超过 310 k 行的大型数据库。每行都有以下字段:
国家
地区
城市
这是我的查询 - 我使用php pdo查询我的属性db:
$sql = 'SELECT * FROM properties
WHERE ( Country = "'.$searchString.'" OR Region = "'.$searchString.'"
OR City = "'.$searchString.'") LIMIT 100';
$stmt = $pdo->query($sql);
现在所有这一切虽然工作正常,但我知道它很混乱,资源密集,任何人都可以向我解释一个更清洁更快的方式这样做也索引让我迷惑了mysql,我应该为三列设置索引和什么样的你会建议索引。
非常感谢任何帮助或指示
答案 0 :(得分:0)
索引不会有帮助,因为您编写了查询。您可以在properties(Country, Region, City)
上添加索引并使用如下查询:
select p.*
from properties p
where country = @searchString
union all
select p.*
from properties p
where region = @searchString and country <> @searchString
union all
select p.*
from properties p
where city = @searchString and region <> @searchString and country <> @searchString;
这可能会有所帮助,但通常or
查询会返回如此多的行,而索引并不是特别有用。