mysql使用STRAIGHT_JOIN链接不走索引问题,大神留步啊

各位大神帮帮忙,有个问题难住了。student表和class表如图,student表中class_id属性有索引。
有两张表图片说明图片说明

执行这条sql:SELECT *
FROM test.student ts
STRAIGHT_JOIN test.class tc ON tc.id =ts.class_id;

有个奇怪的问题当student表数据大于class数据时,这条sql的执行计划显示链接不走索引,如图
图片说明

当student表数据量小于class表示,这条sql的执行计划的链接过程使用索引。
图片说明

请各位大神指教啊,在线等。。。小弟没有金币。。。

这个问题的原因很可能是由于 MySQL 查询优化器(optimiser) 在做查询优化时会根据表的数据量和统计信息(包括目录、数据等)来做决策,从而选择最优的查询计划。

当 student 表数据较多时,MySQL 优化器选择了不使用索引的 STRAIGHT_JOIN 方式,可能是因为使用索引会导致昂贵的访问方式,特别是当需要多次查询、读取大量数据时,使用索引可能并不是最好的策略。但是,这个选择的策略会导致某些情况下查询变慢,这对于一些特定的业务场景可能会对系统性能造成不良影响。

对于这种情况,我们可以通过优化查询条件,例如增加索引、改写 SQL 语句等来提高查询效率。同时,也可以使用一些工具和技术来监控和诊断查询性能,例如 MySQL 自带的慢查询日志(slow query log)、Percona Toolkit 等工具。

在实际业务中,我们需要根据实际情况选择合适的查询优化策略,并不断进行优化和优化测试,确保系统可以在高并发、大数据量等压力下正常工作。