索引SQL查询
问题描述:
什么将是指数的最佳方式:索引SQL查询
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
或两者添加一个,然后查看更快的索引。
我建议可能加速[_here_]。如果这还不够,请提供'SHOW CREATE TABLE'和'EXPLAIN SELECT ...'。 –
谢谢。我不认为这里有一个超链接,但它现在似乎工作。 – mmv456
糟糕 - [在您的其他问题_](http://stackoverflow.com/a/43750755/1766831) –