假设确定列A,B
上的表上需要复合索引。
添加此索引。
如果已有复合索引A,C
,是否有任何理由不将其更改为C,A
?
一旦完成,如果C,D,E
上已有索引,是否有任何理由不将其更改为D,C,E
?
一般来说,当添加索引会触发这种类型的索引'重构的机会时,是否有任何理由不继续推进?
答案 0 :(得分:1)
太通用的ABCD列。索引应该在优化表之间的连接以及查询条件最有意义的情况下进行。举一个简单的订单示例,orderdetail设置。当然,您需要在标题的orderID上的订单明细表上建立索引。
但现在,在标题上。您有customerID,orderID和orderDate。并且您想要查询所有在一天订购的客户......或者单个客户以及订购的所有日期...索引订单在交换方式上可以明显更好。 (日期,客户)和(客户,日期) 第一个场景中的日期/客户效率不高。
将索引列的优先级视为此。你有一个盒子的房间。每个框表示一个日期。包装盒内由客户订购。对于第一个查询,没问题,拿到方框,你有客户,你就完成了。
现在,对第二个查询使用相同的方案。你打开第一个日期框并寻找客户......没有,不是那里...转到下一个日期框,nope ...第三个,是的,等等......你应该能够看到它的重要性数据的上下文,查询以及有助于支持它们的索引。