查询如下:
EXPLAIN EXTENDED
SELECT u0_.value AS value0, u1_.property_uri AS property_uri1, u2_.service_id AS sclr2, count(u0_.id) AS sclr3
FROM usc_account_triple u0_
INNER JOIN usc_account_connection u3_ ON ((u0_.service_subscriber_id = u3_.account_2_id))
INNER JOIN usc_service_subscriber u2_ ON ((u3_.account_1_id = u2_.id))
INNER JOIN usc_property u1_ ON u0_.property_id = u1_.id AND (u1_.status = 1)
WHERE (u1_.create_analytics = '2') AND (u0_.status = 1) AND (u3_.status = 1)
AND (u2_.status = 1) GROUP BY u0_.property_id, u0_.value, u2_.service_id;
这里,与其他表的索引一起,我试图在表格上创建索引&usc_service_subscriber'表格如下:
CREATE INDEX `temp` ON usc_service_subscriber(id, status, service_id);
但是,不幸的是,索引没有被优化器选中。这是解释命令返回的内容:
| 1 | SIMPLE | u2_ | eq_ref | PRIMARY,temp | PRIMARY | 8 | bootsat.u3_.account_1_id | 1 | 100.00 | Using where
任何想法为什么?索引的组合或排序有什么问题吗?
答案 0 :(得分:0)
您可以使用语法FORCE INDEX (index_name)
强制使用索引但据我所知,在您的情况下,由于选择的行太少而未使用索引。
根据你发布的解释结果,它看起来只有1行被提取/选择,这可能是因为没有使用索引的原因。
有关MySQL索引提示的更多信息,请参阅Here。