我有以下查詢:指數具有複雜MySQL查詢
SELECT venues.venue_name, count(distinct checkin.user_id) AS total_count, category_id
FROM checkin
INNER JOIN venues ON checkin.internal_venue_id = venues.venue_primary_id
WHERE checkin.item_id = '3783'
and is_category_valid = 1 and created_at >= DATE_SUB('2013-07-07 12:35:06', INTERVAL 5 DAY)
GROUP BY checkin.internal_venue_id
ORDER BY total_count DESC
LIMIT 10;
我與此查詢所需的索引掙扎。是否正確的索引:
checkin: (internal_venue_id, item_id, is_category_valid, created_at, user_id)
或者是否有另一個更理想的查詢路徑?
所以你不會包含user_id作爲索引的一部分? – gregavola
@gregavola,對不起,把它放在最後,因爲它只是你想要的一個「額外」列,並且不符合查詢中標準的位置或組的順序。 – DRapp
是的,但我是通過該列的計數(distinct user_id)進行排序。如果這個範圍很高? – gregavola