MYSQL / SQL:查询优化

时间:2010-11-04 11:39:34

标签: sql mysql optimization

我有这个问题:

SELECT count(member_id) FROM member_favorite_business WHERE business_id=3912 AND member_id=413

当我使用我的mysql配置文件工具分析此查询时,它说这个查询非常糟糕。它说:

JOIN SIZE: 16128 (VERY BAD, VERY SLOW)


CONTAINS FULL TABLE SCANS (BAD)

我的问题是,我该如何改进?

任何建议都将不胜感激

干杯!

2 个答案:

答案 0 :(得分:4)

(business_id, member_id)上添加索引。

您也可以写COUNT(*)而不是count(member_id),因为member_id不能为NULL,但我怀疑这会对性能产生很大影响。

答案 1 :(得分:0)

评论中的第二个问题比较困难,您可能希望将其作为单独的问题发布。 ORDER BY rand()会导致问题,也许其他人会对此提出建议。在(coordinates,id)或(id,coordinates)上创建一个索引,看哪个更快。我假设2.1032155,49.1801863是样本坐标,你想在10点“某事”中找到5个匹配。