索引和多列主键
经过搜索,没有找到这个特定的菜鸟问题的答案。如果我错过了,我深表歉意。
在MySQL数据库中,我有一个带有以下主键的表
主键ID(发票,项目)
在我的应用程序中,我也会经常自己选择“项目”,而很少选择“发票”。我假设我将从这些列的索引中受益。
当我定义以下内容时,MySQL不会抱怨:
索引(发票),索引(项目),主键ID(发票,项目)
但是,我没有看到任何证据(使用DESCRIBE-我知道如何查找的唯一方法)为这两列建立了单独的索引。
因此,问题是,构成主键的列是否会自动分别索引?另外,有没有比DESCRIBE更好的方法来探索我的桌子的结构?
回答:
我不是很熟悉mySql上的索引内部,但是在我熟悉的两个数据库供应商产品(MsSQL,Oracle)上,索引是balance-
Tree结构,其节点被组织为列的顺序元组。索引定义在( )
因此,除非mySql的操作方式大不相同((可能不是)),只要需要按索引中列的 进行过滤或排序的任何查询, 就
可以使用任何复合索引(在多个列上)。列列表是兼容的,即,如果列的排序顺序与完整索引中列的排序列表相同,则该列是完整索引列集的有序子集,该索引集从实际索引序列的开头开始,除了最后没有差距…
换句话说,这意味着如果在(a,b,c,d)上有索引,则对(a),(a,b)或(a,b,c)进行筛选的查询也可以使用索引,但需要过滤(b)或(c)或(b,c)的查询将无法使用索引…
因此,在您的情况下,如果您经常需要单独对列 进行过滤或排序,则需要单独在该列上添加另一个索引…
以上是 索引和多列主键 的全部内容, 来源链接: utcz.com/qa/416691.html