今天就跟大家聊聊有关mysql中如何进行联合索引优化,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
explain select Fid from t_cyou_view_records where Fanchormasterid = 20237 and Froleid = 15081 and Fouttime is null order by Fentertime desc limit 1;
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
| 1 | SIMPLE | t_cyou_view_records | ALL | NULL | NULL | NULL | NULL | 1709800 | Using where; Using filesort |
看了where条件中两个字段的基数,建立联合索引会有指数级提升
show index from t_cyou_view_records
-> ;
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | C
| t_cyou_view_records | 0 | PRIMARY | 1 | Fid | A | 1710010 | NULL | NULL | | BTREE |
| t_cyou_view_records | 1 | idx_tcvr | 1 | Fanchormasterid | A | 132 | NULL | NULL | YES | BTREE |
| t_cyou_view_records | 1 | idx_tcvrf | 1 | Froleid | A | 58965 | NULL | NULL | YES | BTREE |
alter table t_cyou_view_records add index idx_tcvrf(Froleid,Fanchormasterid);
Query OK, 0 rows affected (7.79 sec)
Records: 0 Duplicates: 0 Warnings: 0
explain select Fid from t_cyou_view_records where Fanchormasterid = 20237 and Froleid = 15081 and Fouttime is null order by Fentertime desc limit 1;
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
| 1 | SIMPLE | t_cyou_view_records | ref | idx_tcvrf | idx_tcvrf | 18 | const,const | 3 | Using where; Using filesort |
扫描行数降低为3
看完上述内容,你们对mysql中如何进行联合索引优化有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
原创文章,作者:carmelaweatherly,如若转载,请注明出处:https://blog.ytso.com/201821.html