从 mysql-slow-log 记录:
Query_time:11.632750 Lock_time:1.317329 Rows_sent:851 Rows_examined:1649439
select record.name, dept.name, school.name FROM record
inner join record as r2 ON
record.number=r2.number AND record.year=r2.year
AND r2.dept_id=12345 AND r2.type=1 AND r2.year=2015
LEFT JOIN school ON record.school_id=school.id
LEFT JOIN dept ON record.dept_id=dept.id
表中有大约 80 万行,record
但查询为什么会检查超过 100 万行?
我已经为 tabledept
和 table设置了索引school
,但我不确定如何为内部连接部分创建索引。我读了一个先前的问题(Rows_sent: 12 Rows_examined: 549024 - how to optimize mySQL query?),但仍然无法解决我的极慢查询。
已编辑(为什么要进行内部连接):
我想从具有 dept_id=12345 的同一个人中选择所有行。结果将是示例图片中的黄色和橙色行。这就是我使用内部联接的原因。