有没有理由不遵循这种级联SQL重建索引重构模式?

时间:2014-12-17 21:30:05

标签: mysql sql indexing

假设确定列A,B上的表上需要复合索引。

添加此索引。

如果已有复合索引A,C,是否有任何理由不将其更改为C,A

一旦完成,如果C,D,E上已有索引,是否有任何理由不将其更改为D,C,E

一般来说,当添加索引会触发这种类型的索引'重构的机会时,是否有任何理由不继续推进?

1 个答案:

答案 0 :(得分:1)

太通用的ABCD列。索引应该在优化表之间的连接以及查询条件最有意义的情况下进行。举一个简单的订单示例,orderdetail设置。当然,您需要在标题的orderID上的订单明细表上建立索引。

但现在,在标题上。您有customerID,orderID和orderDate。并且您想要查询所有在一天订购的客户......或者单个客户以及订购的所有日期...索引订单在交换方式上可以明显更好。 (日期,客户)和(客户,日期) 第一个场景中的日期/客户效率不高。

将索引列的优先级视为此。你有一个盒子的房间。每个框表示一个日期。包装盒内由客户订购。对于第一个查询,没问题,拿到方框,你有客户,你就完成了。

现在,对第二个查询使用相同的方案。你打开第一个日期框并寻找客户......没有,不是那里...转到下一个日期框,nope ...第三个,是的,等等......你应该能够看到它的重要性数据的上下文,查询以及有助于支持它们的索引。