我有三张桌子:
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'所以,我从来没有直接得到晋升,但也在一个订单的范围内。一个订单不会有太多的晋升。我想知道在升级代码列中放置索引是否有用,因为知道在执行内部连接时,内部连接后的结果并不多,因此,可以通过所有这些索引找到给定的推广代码。
在我的上一次查询中,索引是否有意义,因为它只知道这个查询:
SELECT `promotions`.* FROM `promotions` INNER JOIN `orders_promotions` ON `promotions`.`id` = `orders_promotions`.`promotions_id` WHERE `orders_promotions`.`orders_id` = 3返回不超过20行?
发布于 2014-10-24 15:28:07
在where子句中,几乎应该始终对要用于联接、排序、分组或筛选的任何字段使用索引。我会说总是这样,但是规则可能会有例外(例如,如果表上有非常重的写负载,而在索引有用的地方很少使用它)。
https://stackoverflow.com/questions/26551136
复制相似问题