我有一个 MySQL 查询,当前运行时间为 2.5 秒,我想将其缩短到最多 2 秒。
这是查询:
SELECT SQL_CALC_FOUND_ROWS Distinct(c.id)
FROM `content` c
INNER JOIN `actions` AS action
ON c.parent_id = action.primary_id
WHERE 1 = 1
AND c.site_id IN ( 1, 2 )
AND c.type IN ( 'topic' )
AND c.status = 'visible'
AND ( c.lock = 0
OR c.site_id = 1 )
AND ( c.level IN ( 0 )
OR ( c.level IN ( 10 )
AND action.user_id = 123
AND action.type IN ( 'group_follow' ) ) )
ORDER BY c.date_updated DESC
LIMIT 20
以下是目前的统计数据:
- 表格内容有 55k 行
- 表操作有 87k 行
对于内容,我有以下索引:
- parent_id (parent_id)
- 用户 ID(用户 ID)
- type_status_date(类型、状态、日期)
- type_status_updateddate(类型,状态,date_updated)
- 站点 ID(站点 ID)
- type_status_level(类型、状态、级别)
- type_parentid_level(类型,parent_id,级别)
对于操作,我有以下索引:
- primary_id (primary_id)
- 站点 ID(站点 ID)
- 类型(类型)
任何帮助和建议将不胜感激。
谢谢大家!