我有一個MySQL(MariaDB,更精確)的數據庫,它包含不同的「記錄」(不要與數據庫記錄混淆,這些是我的系統使用的數據單位,由多個鍵值字段組成)。 每個「記錄」是「實例」的一部分。 每個「實例是一個的一部分‘用戶組記錄‘可以是一部分‘類別’由於使用了錯誤的INDEX導致的GROUP BY BY查詢速度慢
我想寫檢索所有類別的用戶組的SQL查詢’ 每一個。’ - 和檢索。中存在的所有實例每個類別下的記錄量 我的SQL語句是這樣的:
SELECT COUNT(r.id) AS records_number, c.category
FROM records r
INNER JOIN feeds_instances i ON r.instance = i.id
INNER JOIN feeds_instances_categories c ON c.instance = i.id
WHERE i.user_group = '0'
AND r.reviewed IS NULL
GROUP BY c.category
LIMIT 0 , 30
當測試與SQL_NO_CACHE查詢,我得到了0.2+秒查詢時取出GROUP BY,它減少到0.0008秒 當我對SQL查詢執行EXPLAIN命令時,得到用於表c的索引是「實例」而不是「categor y「(feeds_instances_categories表有三列:id,instance,category。指標上實例和類)存在。
我想強制GROUP BY使用索引類別。我嘗試使用USE INDEX命令,但我得到錯誤。我很可能沒有正確地做,並且無法在文檔中找到正確的方法。
任何幫助,將不勝感激!
我刪除了SQL Server標記,因爲它不支持「LIMIT」。 –
會'選擇{} yourFields從feeds_instances_categories℃的內部JOIN feeds_instances我ON i.id = c.instance INNER JOIN記錄R ON r.instance = {i.id它的其餘部分}'幫助嗎? – Terminus