我有这个问题:
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)
我的问题是,我该如何改进?
任何建议都将不胜感激
干杯!
答案 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个匹配。