文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MySQL中怎么使用索引优化

2023-07-05 04:16

关注

本篇内容主要讲解“MySQL中怎么使用索引优化”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL中怎么使用索引优化”吧!

使用索引优化

索引是数据库优化最常用也是最重要的手段之一,通过索引通常可以帮助用户解决大多数的MySQL的性能优化问题。

数据准备

use world;  create table tb_seller(sellerid varchar(100),name varchar(100),nickname varchar(50),password varchar(60),status varchar(1),address varchar(100),createtime datetime,primary key(sellerid));  insert into tb_seller values('alibaba','阿里巴巴','阿里小店','e10adc3949ba59abbe057f20f883e','1','北京市','2088-01-01 12:00:00'),('baidu','百度科技有限公司','百度小店','e10adc3949ba59abbe057f20f883e','1','北京市','2088-01-01 12:00:00'),('huawei','华为科技有限公司','华为小店','e10adc3949ba59abbe057f20f883e','0','北京市','2088-01-01 12:00:00'),('itcast','传智播客教育科技有限公司','传智播客','e10adc3949ba59abbe057f20f883e','1','北京市','2088-01-01 12:00:00'),('itheima','黑马程序员','黑马程序员','e10adc3949ba59abbe057f20f883e','0','北京市','2088-01-01 12:00:00'),('luoji','罗技科技有限公司','罗技小店','e10adc3949ba59abbe057f20f883e','1','北京市','2088-01-01 12:00:00'),('oppo','oppo科技有限公司','oppo官方旗舰店','e10adc3949ba59abbe057f20f883e','0','北京市','2088-01-01 12:00:00'),('ourpalm','掌趣科技股份有限公司','掌趣小店','e10adc3949ba59abbe057f20f883e','1','北京市','2088-01-01 12:00:00'),('qiandu','千度科技','千度小店','e10adc3949ba59abbe057f20f883e','2','北京市','2088-01-01 12:00:00'),('sina','新浪科技有限公司','新浪官方旗舰店','e10adc3949ba59abbe057f20f883e','1','北京市','2088-01-01 12:00:00'),('xiaomi','小米科技','小米官方旗舰店','e10adc3949ba59abbe057f20f883e','1','西安市','2088-01-01 12:00:00'),('yijia','宜家家居','宜家官方旗舰店','e10adc3949ba59abbe057f20f883e','1','北京市','2088-01-01 12:00:00'); -- 创建组合索引create index index_seller_name_sta_addr on tb_seller(name,status,address);

避免索引失效应用-全值匹配

该情况下,索引生效,执行效率高。

-- 避免索引失效应用-全值匹配-- 全值匹配,和字段匹配成功即可,和字段顺序无关explain select * from tb_seller ts where name ='小米科技' and status ='1' and address ='北京市'; explain select * from tb_seller ts where status ='1' and name ='小米科技' and address ='北京市';

避免索引失效应用-最左前缀法则

该情况下,索引生效,执行效率高。

-- 避免索引失效应用-最左前缀法则-- 如果索引了多列,要遵守最左前缀法则,指的是查询从索引的最左前列开始,并且不跳过索引中的列explain select * from tb_seller ts where name='小米科技';-- key_lem:403explain select * from tb_seller ts where name='小米科技' and status ='1';-- key_lem:410explain select * from tb_seller ts where status ='1' and name='小米科技' ;-- key_lem:410,依然跟顺序无关 -- 违反最左前缀法则,索引失效explain select * from tb_seller ts where  status ='1';-- 违反最左前缀法则,索引失效 -- 如果符合最左前缀法则,但是出现跳跃某一列,只有最左列索引生效explain select * from tb_seller where name='小米科技' and address='北京市';-- key_lem:403

MySQL中怎么使用索引优化

避免索引失效应用-其他匹配原则

该情况下,索引生效,执行效率高。

情况一

MySQL中怎么使用索引优化

-- 避免索引失效应用-其他匹配原则-- 范围查询右边的列,不能使用索引explain select * from tb_seller  where name= '小米科技' and status >'1' and address='北京市';-- key_lem:410,没有使用status这个索引-- 不要在索引列上进行运算操作,索引将失效。explain select * from tb_seller where substring(name,3,2) ='科技';-- 没有使用索引-- 字符串不加单引号,造成索引失效。explain select * from tb_seller where name='小米科技' and status = 1 ;-- key_lem:403,没有使用status这个索引

情况二

explain中的extra列

extra含义
using filesort说明mysq|会对数据使用一个外部的索引排序,而不是按照表内的索引顺序进行读取,称为“文件排序" ,效率低。
using  temporary需要建立临时表(temporary table)来暂存中间结果,常见于order by和group by;效率低
using  indexSQL所需要返回的所有列数据均在一棵索引树上,避免访问表的数据行,效率不错
using where在查找使用索引的情况下,需要回表去查询所需的数据
using index condition查找使用了索引,但是需要回表查询数据
using index;using where查找使用了索引,但是需要的数据都在索引列中能找到,所以不需要回表查询数据

MySQL中怎么使用索引优化

MySQL中怎么使用索引优化

MySQL中怎么使用索引优化

MySQL中怎么使用索引优化

但是再加有个password

MySQL中怎么使用索引优化

 3、情况三

MySQL中怎么使用索引优化

MySQL中怎么使用索引优化

情况四

MySQL中怎么使用索引优化

MySQL中怎么使用索引优化

MySQL中怎么使用索引优化

MySQL中怎么使用索引优化

如果MySQL评估使用索引比全表更慢,则不使用索引。is NULL , is NOT NULL有时有效,有时索引失效。in走索引,not in索引失效。单列索引和复合索引,尽量使用符合索引

MySQL中怎么使用索引优化

MySQL中怎么使用索引优化

MySQL中怎么使用索引优化

MySQL中怎么使用索引优化

验证

MySQL中怎么使用索引优化

创建了单一的三个索引,最后面where全使用了但explain显示只用了index_name

到此,相信大家对“MySQL中怎么使用索引优化”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯