mysql - 索引sql查询

标签 mysql performance indexing bigdata

对此进行索引的最佳方法是什么:

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 分钟后停止了它,但我有一种感觉不应该花那么长时间。

最佳答案

您应该为 WHEREJOIN 语句中提到的列设置索引。因此,请删除您设置的索引,并为 chk.business_idbus.business_id 或两者添加索引,看看哪个会更快。

关于mysql - 索引sql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43763032/

相关文章:

java - MySQL Workbench 和 Java(通过 JDBC)的查询结果不同

php - 在 codeigniter global 中关闭表单自动完成

java - 遍历图像像素使我的程序崩溃

arrays - 关于矩阵运算的问题

sql-server-2005 - 由于不存在重复项而无法创建索引?

mysql - 频率加入声明

performance - drawRect 性能

mysql - 帮助调整 my.cnf 中的参数

c# - 如何在 int 列表中找到满足某些条件的项目的索引?

mysql - MAMP Pro 无法启动 MySQL