在 MySQL 文档关于避免全表扫描的部分中,MySQL 将使用全表扫描的一种情况描述如下:
您正在通过另一列使用具有低基数的键(许多行与键值匹配)。在这种情况下,MySQL 假设通过使用该键可能会执行许多键查找,并且表扫描会更快。
我很难理解这一点。
首先,我不确定是否应该将短语解析为“使用键......通过另一列”或“低基数......通过另一列”。两种解释似乎都不清晰。
我可以大致了解,如果我选择表格的很大一部分,比如 75% 或其他什么,那么索引的使用速度将比仅读取整个表格要慢(因为需要深入获取行)。但我不明白“通过另一列”与它有什么关系。
谁能解释一下这句话?