我正在测试查询的运行速度,因为它会经常运行。我插入了50万张假记录以查看效果。这是查询
SELECT SUM(party_size) AS sump FROM `bookings` USE INDEX(index_group_orderby)
JOIN users ON users.id=bookings.users_id JOIN restaurants ON restaurants.id=bookings.restaurants_id
WHERE timestamp BETWEEN '2014-02-01' AND '2014-02-09 23:59' AND users.usertype=1
AND bookings.made_from=1 AND bookings.status=1 AND restaurants_id=4
GROUP BY users_id ORDER BY sump
运行约2秒钟。如果我删除SUM,GROUP BY和ORDER BY它运行0.0025秒。
我正在使用users.usertype
上的索引和另一个bookings(party_size,timestamp,status restaurants_id,users_id)
上的索引。
这是explain
,有趣的是MySQL虽然我在查询中写了它,却没有使用bookings
。
我的问题是为什么group by
和order by
使查询慢得多,为什么MySQL不使用索引?