覆盖索引和联合索引
2023-12-31 08:36:01
覆盖索引和联合索引是数据库中常?的两种索引类型
覆盖索引
覆盖索引是指?个包含了所有查询需要的列的索引,查询时可以直接从索引中取到需要的数据,?不需要再回到表中查找,从?可以提?查询效率
如下建立覆盖索引
CREATE INDEX orders_idx ON orders (order_no, create_time, total_amount);
其中,orders_idx是索引的名称,orders是表名,order_no、create_time和total_amount是需要建立索引的字段名。
当我们需要查询订单号为某个值的订单数据时,可以使用以下 SQL 查询语句,来查询符合条件的订单数据,并使用该覆盖索引进行优化:
SELECT order_no, create_time, total_amount
FROM orders WHERE order_no = '123456';
联合索引?
联合索引是指使?多个列组合起来作为?个索引,可以同时查询多个列
联合索引 = 聚合索引 = 组合索引
联合索引可以包含多个列,但是查询时只能使?前缀列进?查询,即只有在查询中使?了联合索引的前?个列,才能利?联合索引进?查询。如果查询中没有使?前缀列,那么联合索引就不能发挥作?,需要使?单独的索引或全表扫描。
最左前缀匹配原则
最左前缀匹配原则是指如果?个联合索引包含了多个列,那么在查询时只能使?前?的列进?匹配
?例如,?个联合索引包含了 A、B、C 三列,那么查询时只能使? A、AB 或 ABC 进?匹配,?不能只使? B 或 C 进?匹配。这是因为如果查询时使?的列不是最左前缀列,那么 MySQL 就?法使?索引进?查询,会导致全表扫描,从?降低查询效率
文章来源:https://blog.csdn.net/Mr_liu888/article/details/135300177
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!