这篇文章将为大家详细讲解有关怎么在mysql中实现一个联合索引,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
联合索引
联合索引的定义为(mysql):
ALTER TABLE “table_name”, ADD INDEX (‘col1’,‘col2’,‘col3’),
联合索引的优点
若多个一条sql,需要多个用到两个条件
SELECT *,得到“user_info”, WHERE 用户名=& # 39;xx # 39;,密码=& # 39;xxxxxx # 39;;
当索引在检索<代码>密码> 代码字段的时候,数据量大大缩小,索引的命中率减小,增大了索引的效率。
符合索引的索引体积比单独索引的体积要小,而且只是一个索引树,相比单独列的索引要更加的节省时间复杂度和空间复杂度
联合索引命中的本质(最左匹配的理解)
定义
当创建(<代码> col1 代码>,<代码> col2 代码>,<代码> col3> 代码)联合索引时,相当于创建了(<代码> 代码>上校)单列索引,(<代码> clo1 代码>,<代码>二氧化氯> 代码)联合索引以及(<代码> col1 代码>,<代码> col2 代码>,<代码> col3> 代码)联合索引想要索引生效,只能使用<代码> col1 代码>和<代码> col1 代码>,<代码> col2 代码>和<代码> col1 代码>,<代码> col2 代码>,<代码> col3 代码>三种组合,当然,<代码> col1 代码>,<代码> col3> 代码组合也可以,但实际上只用到了<代码> col1> 代码的索引,<代码> col3> 代码并没有用的到!
图解
通俗理解
联合索引相当于一个按照<代码>姓氏,名字> 代码的一个电话簿,只能先确定姓氏才可以命中索引,下列可以正确命中联合索引的语句(<代码>=代码>和<代码> 代码>直接的字段都可以乱序,mysql的查询优化器可以优化成索引识别的形式)
——,只命中,col1, col2 SELECT *,得到“table_name”, WHERE “col1”=& # 39; xx # 39;;
,,命中col1, col2.col1, col2的顺序可以颠倒 SELECT *,得到“table_name”, WHERE “clo1”=& # 39; xx # 39;,二氧化氯的=& # 39;xxx # 39;,, SELECT *,得到“table_name”, WHERE “二氧化氯”=& # 39;xxx # 39;,, ' clo1 '=& # 39; xx # 39;;
,,命中col1, col2, col3,同理,三个列的顺可以颠倒 SELECT *,得到“table_name”, WHERE “col1”=& # 39; x # 39;,“col2”=& # 39; xx # 39;,“col3”=& # 39; xxx # 39;; SELECT *,得到“table_name”, WHERE “col1”=& # 39; x # 39;,“col3”=& # 39; xx # 39;,“col2”=& # 39; xxx # 39;; SELECT *,得到“table_name”, WHERE “col2”=& # 39; x # 39;,“col3”=& # 39; xx # 39;,“col1”=& # 39; xxx # 39;;
关于怎么在mysql中实现一个联合索引就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。