为SELECT查询添加更多特异性会使它更快吗?

use*_*811 5 mysql sql

我有一个相当大的表,有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.

那么这是明智的还是我只是让查询更耗时?

Bob*_*man 6

通常,向WHERE查询中的子句添加条件不会对执行时间产生太大影响.但是,如果将索引添加到WHERE子句中提到的字段,则可以显着提高性能.

因此,在您的示例中,如果没有索引,city_id并且您要将该条件添加到您的WHERE子句并在该字段上创建索引,您可能会看到相当大的性能改进.