我有一个相当大的表,有150,000个记录.它有很多字段,如country_id,region_id,city_id,纬度,经度,postal_code,仅举几例.
我需要根据纬度和经度从这张表中选择,没有别的.我的查询如下所示:
SELECT * FROM `mytable`
WHERE `latitude` = '$latitude'
AND `longitude` = '$longitude';
Run Code Online (Sandbox Code Playgroud)
现在虽然我从这个表中选择的唯一标准是纬度/经度,但我想知道如果添加更多特异性会加快查询速度,例如:
SELECT * FROM `mytable`
WHERE `city_id` = '320'
AND `latitude` = '$latitude'
AND `longitude` = '$longitude';
Run Code Online (Sandbox Code Playgroud)
对我来说,在查询中添加更多条件可以加快速度,但同时我通过首先确保选择的所有记录来自特定的城市ID,从而缩小可能结果的数量,这似乎是违反直觉的.我知道我将在接下来指定的纬度和经度范围内.
总记录可能约为150k,但距离该特定城市仅约10k.
那么这是明智的还是我只是让查询更耗时?
通常,向WHERE查询中的子句添加条件不会对执行时间产生太大影响.但是,如果将索引添加到WHERE子句中提到的字段,则可以显着提高性能.
因此,在您的示例中,如果没有索引,city_id并且您要将该条件添加到您的WHERE子句并在该字段上创建索引,您可能会看到相当大的性能改进.
| 归档时间: |
|
| 查看次数: |
345 次 |
| 最近记录: |