在将INNER JOIN组合使用时,索引是否有用?

时间:2014-10-24 15:26:12

标签: mysql

我有三张桌子:

Orders

OrdersPromotions

Promotions

我的大部分疑问都是这样的:

SELECT `promotions`.* FROM `promotions` INNER JOIN `orders_promotions` ON `promotions`.`id` = `orders_promotions`.`promotions_id` WHERE `orders_promotions`.`orders_id` = 3 AND `promotions`.`code` = 'my_promotion_code'

所以,我从不直接获取促销,但也在订单范围内。订单不会有很多促销活动。我想知道在促销的代码栏中放置一个INDEX是否有用,知道在INNER JOIN实际上INNER JOIN之后的结果并不多,所以,可以通过它们找到它们促销代码是给定的。

在我之前的查询中,索引是否有意义,只知道此查询:

SELECT `promotions`.* FROM `promotions` INNER JOIN `orders_promotions` ON `promotions`.`id` = `orders_promotions`.`promotions_id` WHERE `orders_promotions`.`orders_id` = 3

返回不超过20行?

1 个答案:

答案 0 :(得分:1)

您几乎总是在要用于连接,排序,分组或过滤where子句的任何字段上使用索引。我会说ALWAYS,但规则可能有例外(例如,如果你的表上有非常繁重的写入负载,很少用于索引有用的读取)。