https://www.nowcoder.com/feed/main/detail/0cf068865ae644df86a588450c28835d

在一张表中,如果字段 a 和 b 各自单独建立了索引,而你在查询中使用 WHERE a = x AND b = y,那么这种情况下的索引命中情况如下:

单独使用的索引:由于 a 和 b 各自都有单独的索引,查询引擎可以选择使用 a 的索引或 b 的索引,来优化查询**。通常情况下,数据库会选择一个更有选择性的索引**(即能过滤掉更多行的索引)来进行数据的查找。

索引合并:一些数据库系统(例如 MySQL 的 InnoDB 存储引擎)可能会采用一种称为“索引合并”(Index Merge)的优化策略,来同时使用 a 和 b 的索引。这种情况是通过将两个独立索引的结果集进行合并,然后获取满足条件的最终结果。不过,索引合并的效率通常不如复合索引(见下文)高。

建议使用复合索引:如果你经常在查询中使用 a = x AND b = y 这样的组合条件,那么最好的做法是在 a 和 b 字段上创建一个复合索引(即 (a, b) 的联合索引)。这样可以确保查询时直接利用复合索引,能够显著提高查询性能。

作者:好喝到喔喔叫的啵啵奶茶

链接:

https://www.nowcoder.com/interview/center?entranceType=导航栏

来源:牛客网