我最近一直在尝试使用SQL EXPLAIN
,并且PK Possible Keys
和K Key
,
我得到以下行
[id - select_type - table - type - possible_keys - key - key_len - ref - rows - Extra]
[1 - PRIMARY - users - const - PRIMARY, username - username - 66 - const - 1 - using index; using temporary; using filesort]
我知道我必须同时选择PRIMARY
和username
作为multiple index
,但是我可以在id
的表格上只有一个PRIMARY
键,那么PK
是否会向我展示我应该选择其中一个的密钥?
you 不要"选择索引"以在查询中使用;优化器选择。
PRIMARY KEY
(PK)可以包含一个或多个列。桌子只能有一个PK。每个桌子都应该有一个PK。
"辅助键"是PK以外的任何索引。它也可以有一个或多个列。
对单个SELECT
的优化器几乎从不使用超过一个索引(PK或某个次要)。
"可能的键"是优化器认为可能工作的键。经过进一步的分析后,它决定使用哪个,并在"密钥"列中声明它。在您的示例中,优化器决定INDEX "username" (...)
比PRIMARY KEY(...)
更好。
我不清楚您期望的"多重索引"的意思是...
- 可以有多个索引;但是优化器不太可能使用多个。
- 索引中可能有多个列。
- 表可以具有多个索引。
优化器具有倒塌:只需扫描整个表(而无需触摸任何索引)。
如果您想进一步讨论EXPLAINs
,请同时向我们展示SELECT
和EXPLAIN
。并显示多对,因此我们可以"比较和对比"。