对此进行索引的最佳方法是什么:
select bus.business_id, bus.latitude, bus.longitude,
(
SELECT sum(checkin_count)
FROM yelp.checkin
WHERE business_id = chk.business
) AS checkin_count
from yelp.business bus
order by bus.business_id
limit 10;
我正在尝试以这种方式对其进行索引:
ALTER TABLE yelp.business ADD INDEX latitude_longitude_count_ndex (business_id, latitude, longitude);
但是需要很长时间(即我运行了一夜,大约 2 小时后失去了连接)。
我正在 MySQL 中运行它。
<小时/>附带问题,因为这让我进入索引,这段代码是否有原因:
select bus.business_id, bus.latitude, bus.longitude, sum(chk.checkin_count ) as checkin_count
from yelp.business bus
inner join yelp.checkin chk
on bus.business_id=chk.business_id
group by bus.business_id, bus.latitude, bus.longitude
order by bus.business_id
limit 10;
查询时间这么长? 即使我将限制更改为 1,也需要很长时间。我最终在 4 分钟后停止了它,但我有一种感觉不应该花那么长时间。
最佳答案
您应该为 WHERE
或 JOIN
语句中提到的列设置索引。因此,请删除您设置的索引,并为 chk.business_id
或 bus.business_id
或两者添加索引,看看哪个会更快。
关于mysql - 索引sql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43763032/