pil*_*ght 1 mysql sql indexing primary-key
因此,每当我解释我的查询时,我经常得到一些实例,其中它将某些字段表示为可能的键,但是密钥表将为空...
为什么MySQL会这样做并决定不使用密钥,实际上它可以使用可能的密钥?
优化器可以合理地计算出使用索引会导致比全表扫描更差的性能.
我给你举个例子:
比如说,您有一个已编入索引的性别字段,但您的记录中有90%是女性.优化器可以使用索引,但由于数据的扩展是倾斜的,因此执行全表扫描可能更有效.
它不能总是使用密钥,例如:
SELECT * FROM A, B where A.id = B.id;
Run Code Online (Sandbox Code Playgroud)
尽管id两个查找都是可能的关键,但它不能用于两者.其中一个表必须进行全面扫描.