当前位置: 首页 > news >正文

招商网站建设服务商wordpress 企业网站 免费下载

招商网站建设服务商,wordpress 企业网站 免费下载,中国菲律宾商会会长,小豹子韬韬是哪个网站做的Mysql实战-SQL语句优化 前面我们讲解了索引的存储结构#xff0c;BTree的索引结构#xff0c;以及索引最左侧匹配原则#xff0c;Explain的用法#xff0c;可以看到是否使用了索引#xff0c;今天我们讲解一下SQL语句的优化及如何优化 文章目录 Mysql实战-SQL语句优化1.…Mysql实战-SQL语句优化 前面我们讲解了索引的存储结构BTree的索引结构以及索引最左侧匹配原则Explain的用法可以看到是否使用了索引今天我们讲解一下SQL语句的优化及如何优化 文章目录 Mysql实战-SQL语句优化1.表结构2 where语句及order的列 建立索引3. where语句不要使用!,4.where语句不要or进行判断5.where语句不要使用 like模糊查询6.where语句 不要 in 和not in 可能也会导致全表扫描7.where语句不要使用表达式计算及函数运算 1.表结构 新建表结构 user user_info #新建表结构 user CREATE TABLE user (id bigint NOT NULL AUTO_INCREMENT COMMENT 主键,id_card char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 身份证ID,user_name char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 用户名字,age int NOT NULL COMMENT 年龄,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT1 DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_unicode_ci COMMENT用户表id 主键id列id_card 身份证iduser_name 用户姓名age 年龄 先插入测试数据, 插入 5条测试数据 INSERT INTO test.user (id, id_card, user_name, age) VALUES (1, 11, aa, 10); INSERT INTO test.user (id, id_card, user_name, age) VALUES (2, 22, bb, 20); INSERT INTO test.user (id, id_card, user_name, age) VALUES (3, 33, cc, 30); INSERT INTO test.user (id, id_card, user_name, age) VALUES (4, 44, dd, 40); INSERT INTO test.user (id, id_card, user_name, age) VALUES (5, 55, ee, 50);2 where语句及order的列 建立索引 表结构先不创建索引我们看下执行分析 EXPLAIN SELECT * FROM user WHERE user_name“AA”; EXPLAIN SELECT * FROM user WHERE user_nameAA;执行成功 typeALL表示没有索引查询效率低下 我们在 user_name上建立索引后再看下 #创建索引 alter table user add index idx_name(user_name);#执行分析 EXPLAIN SELECT * FROM user WHERE user_nameAA;使用了索引查询效率提升 3. where语句不要使用!, where语句中使用! 或者 , 或者使用 between and 都会是引擎放弃索引进行全表扫描 我们新建 age的索引然后基于age去做查询分析 #创建age索引 alter table user add index idx_age(age); #执行分析 EXPLAIN SELECT * FROM user WHERE age10;使用age索引进行查询没有问题 现在我们使用 或者 来进行查询执行查询分析 EXPLAIN SELECT * FROM user WHERE age !10; EXPLAIN SELECT * FROM user WHERE age 10; EXPLAIN SELECT * FROM user WHERE age BETWEEN 10 and 20; EXPLAIN SELECT * FROM user WHERE age 10 and age 20 ;执行结果全都是 typerange 表示在索引范围内查找,对索引的扫描开始于某一点,返回匹配值域的行, 已经不是ref类型了效率已经不高了 Extra 其他信息 using index condition 表示会先条件过滤索引过滤完索引后找到所有符合索引条件的数据行随后用 WHERE 子句中的其他条件去过滤这些数据行 using index condition using index 回表 where 过滤 4.where语句不要or进行判断 where语句使用or判断也会导致引擎放弃索引进而进行全表扫描 使用 or 也会造成 typerange的情况 EXPLAIN SELECT * FROM user WHERE age 10 or age 20;这种情况我们可以采用 union all 来进行优化 EXPLAIN SELECT * FROM user WHERE age 10 union all SELECT * FROM user WHERE age 20 ;5.where语句不要使用 like模糊查询 like模糊查询也会导致 全表扫描 #1.左侧开头精确匹配右侧结果模糊 EXPLAIN SELECT * FROM user WHERE user_name like a%; #2.左侧开头模糊右侧结果精确匹配 EXPLAIN SELECT * FROM user WHERE user_name like %a; #3.左侧开头模糊右侧结果模糊 EXPLAIN SELECT * FROM user WHERE user_name like %a%;上面3种情况我们来逐一分析 左侧开头精确匹配右侧结果模糊, 查询会使用左侧索引进行匹配typerange EXPLAIN SELECT * FROM user WHERE user_name like a%;2. 左侧开头模糊右侧结果精确匹配 查询不会使用索引全表扫描 typeALL EXPLAIN SELECT * FROM user WHERE user_name like %a;3. 左侧开头模糊右侧结果模糊, 查询不会使用索引全表扫描 typeALL EXPLAIN SELECT * FROM user WHERE user_name like %a%;6.where语句 不要 in 和not in 可能也会导致全表扫描 where子语句使用 innot in 也有可能导致全表扫描 所以使用in 到底走不走索引呢 in通常是走索引的IN 的条件过多会导致索引失效走索引扫描当in后面的数据在数据表中超过一定的数量 有人说是30%假如上面的例子的全部数据大约100条匹配数据超过30条 会走全表扫描即不走索引in走不走索引和后面的数据有关系这个比例不准 我表中5条数据 我现在 in(10,20,30,40), in了4条但是依旧走了索引 typerange keyidx_age EXPLAIN SELECT * FROM user WHERE age in(10,20,30,40);我现在再加一个in条件 in(10,20,30,40,50), 此刻就没有走索引 typeALL EXPLAIN SELECT * FROM user WHERE age in(10,20,30,40,50);但是 not in 是肯定不走索引的这是我们明确禁止的 EXPLAIN SELECT * FROM user WHERE age not in(1,2);7.where语句不要使用表达式计算及函数运算 where子句不要使用表达式计算或者函数运算这回导致全表扫描 EXPLAIN SELECT * FROM user WHERE age / 2 10; EXPLAIN SELECT * FROM user WHERE SUBSTRING(user_name,1,3)aa;执行结果全部都是 typeALL,使用表达式计算和函数的 都不会使用索引 至此我们了解如何去优化查询语句在平时项目中也应该多注意这些用法防止出现线上事故
http://www.pierceye.com/news/140751/

相关文章:

  • 潍坊市高新区建设局网站hdsyscms企业建站系统
  • 网站运营做产品需要哪些知识开启wordpress多站点
  • flash网站源码 免费怎么可以自己制作网站
  • wordpress文章站主题如何删除自己建的网站
  • 徐州网站建设哪家好薇深圳找工作的网站
  • 局域网站点建设方案东莞企业营销型网站
  • 中国光大国际建设工程公司网站自己开店
  • 手机建站程序昆山设计公司
  • 网站泛解析中国新闻社是国企还是私企
  • dw做静态网站手机app制作视频教程
  • 惠州做网站公司网页游戏排行榜前十名歌
  • 会ps的如何做网站高等教材建筑电气久久建筑网
  • 甘肃住房城乡建设厅网站wordpress风格化页面
  • 起名网站建设免费找素材软件
  • 网站基本信息设置链接搜索
  • 广州海珠网站开发营销策划
  • 医院网站制作公司专门做spa的网站
  • 企业网页制作与网站设计网站必须天天更新吗
  • 乌苏市城乡建设局网站外贸网网站建设
  • html5网站开发实例书籍凡科建站代理
  • 与建设部网站网站注册登录页面设计
  • 企业网站推广计划免费最新如何建设网站教程视频
  • 17一起做网站普宁站好看个人网页模板
  • 民治营销网站专业网站建设价格最优
  • 免费的html网站做柜子喜欢上哪些网站看
  • 网站没备案怎么做加速现代装修风格三室两厅效果图
  • 互助平台网站建设网上商城怎么购物
  • 百度知道山东网站建设建设网站成本预算
  • 人人做免费网站网站建站是 什么
  • 以背景做网站视频为单位网站建设实施方案