本文主要介绍Mysql的组合索引方法的详细说明。通过示例代码和查询结果非常详细,对大家的学习或工作都有一定的参考价值。有需要的朋友下面跟边肖学习。
对于任何DBMS,索引都是优化的最重要因素。对于少量数据,缺少一个合适的索引影响不大,但是随着数据量的增加,性能会急剧下降。
如果索引多个列(组合索引),列的顺序很重要,MySQL只能有效搜索索引最左边的前缀。例如:
假设有一个复合索引(c1,c2),可以由查询语句select * from t1使用,其中c1=1,c2=2。c1=1的查询select * from t1也可以使用这个索引。但是查询语句select * from t1 where c2=2不能使用这个索引,因为组合索引没有前导列,也就是说如果要使用c2列进行搜索,c1必须等于某个值。
示例:
创建两个表,book(图书表)和bookclass(图书分类表)
从图书b中选择b.ISBN,其中b . CATEGORY _ ID=1;
执行时间:0.053秒
使用explain来分析这个SQL:
Type=ALL Extra=Using where,全表查询不使用索引。
Explain展示了mysql如何使用索引来处理select语句和连接表。它可以帮助选择更好的索引和编写更优化的查询语句。
对于前一个表中的每一行组合,执行完整的表扫描。如果该表是第一个没有用const标记的表,这通常是不好的,在其他情况下通常是非常糟糕的。通常,可以添加更多的索引而不是全部索引,这样就可以根据上一个表中的常数值或列值来检索行。
创建复合索引:
在book上创建索引index _ ISBN(CATEGORY _ ID,ISBN);
再次执行SQL,发现时间缩短到0.009秒
使用explain来分析这个SQL:
Type=ref,Extra=Using index使用索引查询。
Ref对于上一个表中的每个行组合,将从该表中读取具有匹配索引值的所有行。如果联接只使用键最左边的前缀,或者如果键不是唯一键或主键(换句话说,如果联接不能基于关键字选择单个行),则使用ref。如果使用的键只匹配几行,这种连接类型很好。
关于Mysql的组合索引方法的详细解释这篇文章到此为止。关于Mysql的组合索引的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。