我正在从数据库中选择位置(城市、州)。问题是查询运行有点慢,我不知道如何加快它。例如:
SELECT CONCAT_WS(', ', city, state) as location, AVG(latitude), AVG(longitude)
FROM places
WHERE city='New York' AND state='NY'
GROUP BY location
无论如何,该位置都会有一个 CONCAT,因为我希望数据库返回一个漂亮的连接版本的位置(除非有理由在代码中这样做)。例如,“纽约,纽约”。实际上,有时会添加第三列(邮政编码)。我在 MySQL 上运行。
优化此查询的最佳方法是什么?
另外,作为次要问题,添加“DISTINCT”会以任何方式减慢查询速度吗?例如:
SELECT DISTINCT CONCAT_WS(', ', city, state) as location, AVG(latitude), AVG(longitude)
FROM places
WHERE city='New York' AND state='NY'
GROUP BY location
(我现在正在这样做,但是在提出这个问题的过程中,我意识到由于 GROUP BY 子句,不需要 DISTINCT;但是,由于没有必要,我想知道它是否有任何区别,如果我应该打扰摇船以加快查询速度。)
编辑:已经有一个关于城市、州和邮政编码的索引;加上其中的组合(城市,邮政编码;和州/邮政编码单独)。