【发布时间】:2021-01-05 23:50:42
【问题描述】:
我已经读过,在复合索引中,您应该首先对最具体的列进行排序,但是我的想法是,由于我的理解(或缺乏那里),最理想的路线是首先涵盖最不具体的索引of)关于索引映射如何在内存中工作。 visual aid
例如,如果我有一个表,vehicles 有三列,vehicle、type 和 driver。
vehicle 可以过滤为 3 个可能的值car、bike、helicopter
type可以过滤为6个值,petrol/automatic、petrol/manual、diesel/automatic、diesel/manual、、electric/automatic、electric/manual
driver 是驱动程序的名称(不定数量的值)
--
如果按 vehicle 过滤可以返回 1000 个结果,按 type 过滤可以返回 500 个结果,按 driver 过滤可以返回 3 个结果,那么最佳索引不应该是 vehicle, type, driver 吗?因为如果索引以driver 开头,这是否意味着在通过type 然后vehicle 进一步过滤之前扫描一个巨大的索引?
如果我应该将最具体的列排在最前面,有人可以帮我解决这个问题,并向我解释一下,为什么以及它是如何工作的?
【问题讨论】:
标签: mysql database indexing composite-index