这让我发疯了,我正在努力与mysql上的3个表连接,我想要的是,选择用户被绑定的所有suscriptors,为此,我得到了这个表
user(id, nombre)
suscriptor(id, nombre)
suscripcion(id, userid, suscriptorid)
我使用的查询就是这个:
select u.nombre, sr.nombre, s.suscriptorid from user u
inner join suscripcion s on s.userid = u.id
inner join suscriptor sr on sr.id = s.suscriptorid
where u.id = 1;
并且它工作正常,但是当我使用explain来检查查询时,当只有一个结果时,我的意思是,当id = 1的用户只被绑定到一个suscriptor时,一切都很好,因为扫描的总行数是1 * 1 * 1.问题是当用户被嫌疑人多于一个,导致它显示:
行为1,表u(用户)中的类型为const
row为1,type为表s中的ref(suscripcion)
row是5(总行数),类型全部在表sr(suscriptor)中
我尝试过这些类型的索引组合:
并且似乎只使用其中一个索引,并继续扫描表格中的所有结果
非常感谢。
答案 0 :(得分:1)
如果您只有5行,则查询计划程序将不使用索引,因为读取所有5行的速度更快,然后使用索引。尝试用几百行进行测试。你也可以suggest index to see if it's eligible at all