索引这是什么最好的方法:
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
或两者添加一个索引,然后看看会更快的索引。