我有一个带表的数据库。该表有许多行列:(id1,id2,user,ip,time,location)。没有列是唯一的。只有id1和id2的组合才是。
我使用以下命令创建了列id1和id2的主键:
ALTER TABLE Main ADD PRIMARY KEY (id1, id2)
现在,如果我使用此查询进行搜索:
SELECT user FROM Main WHERE id1 = 'ABFHJK' LIMIT 3
我是否利用了主键索引?
答案 0 :(得分:1)
在两列上添加索引时,它们按照您指定的顺序工作。 id1和id2的主索引将使以下查询使用索引:
SELECT * FROM foo WHERE id1 = 'foo'
SELECT * FROM foo WHERE id1 = 'foo' AND id2 = 'bar'
但是,它不会单独索引id2
:
SELECT * FROM foo WHERE id2 = 'bar'
答案 1 :(得分:0)
是的,如the manual中所述,在这种情况下,MySQL将使用索引,因为您是根据索引的最左边前缀进行选择。
如果您基于id2
进行选择,那么MySQL将不会使用索引。