SQL优化实战之加索引】的更多相关文章

有朋友和我说他的虚机里面的mysql无法跑sql,但是在本地环境是这个sql是可以跑出来的.碰到这个问题第一反应是:死锁. 于是让他查询数据库的几个状态: 发现连即时锁都非常少,不是锁的问题. 进一步排查,是否是系统瓶颈造成. 使用top命令,发现了端倪: 这是一个单核的服务器,cpu这么高,绝对有问题.登上mysql,发现只有14个线程,但都是在执行下面这个语句: select XX from orders c, area a, city y, province p, customers s,…
SQL优化(三)—— 索引.explain分析   一.什么是索引 索引是一种排好序的快速查找的数据结构,它帮助数据库高效的查询数据 在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式指向数据,这样就可以在这些数据结构上实现高效的查找算法.这种数据结构,就是索引…
目录 为什么需要优化SQL SQL优化的重点 索引 索引的结构 索引的优缺点总结: 索引的分类 索引操作 B树 实战 问题 数据库方面,我会使用MySQL来讲解 为什么需要优化SQL 性能低,执行时间长,SQL语句写的垃圾(特别是嵌套查询),索引失效,服务器参数不合理(缓存,线程数) SQL优化的重点 SQL优化上面说了几个原因,其中最重要的就是索引的优化,索引就是汉语词典里面的目录,有目录,我可以很容易的找到想查的字,没有目录,只能一页一页的翻查,这样效率就很低了 索引 索引的结构 索引是数据…
避免索引失效原则(二) 注:继上一篇文章继续讲解: 避免索引失效原则(一)https://www.cnblogs.com/StanleyBlogs/p/10482048.html#4195062 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 体验SQL优化中的概率情况 在上一篇文章结尾处,我们在执行查询计划的时候,却发现我明明加了索引,并且也满足了使用索引的条件,但是,给我的优化结果却是失败,从而,得出一个结论便是,优化是概率的,也就跟彩票一样,不可能百分之百优化成功的,但是…
避免索引失效原则(一) 精力有限,剩余的失效原则将会在 <避免索引失效原则(二)>中连载出来,请谅解 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 避免索引失效的一些原则 我们编写SQL语句后会进行添加一些索引进行优化,但是有时候确实建了索引,但索引有时候会失效: 比如在模糊查询使用 in 关键字的时候索引就失效了,这只是其中的一个条件: 1.复合索引的时候,不要跨列或无序使用(最佳左前缀) 我在前几篇文章有重点介绍过: 就比如你建立了一个索引 分别字段为 a b c,你使…
sql一执行就卡住,然后就...杀进程了 看了一下表的大小 第一反应就是加索引,然后explain看了一下走什么索引了,结果很尴尬,三个表,只走了一个索引...一群人在那纠结为毛走不了索引. 无意间发现有个表的字符编码是gbk..另外两个都是utf8..网上查了一番,才发现当表的编码不一致的时候left join走不了索引...…
equal最好了,其次in,最后是range !=  <>  这类非操作尽量不用,它会转换为range.>都是范围查询 复合索引有左匹配原则,(clo_a,clo_b)相当建立了两个索引(clo_a,clo_b)clo_a, 加索引前,最好在相同数据量的测试环境下,测试. 最好用线上的,怕造的数据有数据倾斜,造成数据选择性不高. 有分隔符的复杂索引,可以考虑前辍索引或复合索引 数据库增加索引操作 虽然,mysql声称5.7版本后,支持在线ddl且不锁表,但是,执行效率,还是没有pt-on…
目录 Hive SQL执行流程 Hive debug简单介绍 Hive SQL执行流程 Hive 使用Calcite优化 Hive Calcite优化流程 Hive Calcite使用细则 Hive向Calcite提供元数据 上一篇主要对Calcite的背景,技术特点,SQL的RBO和CBO等做了一个初步的介绍.深入浅出Calcite与SQL CBO(Cost-Based Optimizer)优化 这一篇会从Hive入手,介绍Hive如何使用Calcite来优化自己的SQL,主要从源码的角度进行…
最近在优化日结存储过程,日结存储过程中大概包含了20多个存储过程. 发现其有一个存储过程代码有问题,进一步发现结存的数据中有一个 日期字段business_date 是有问题的,这个字段对应的类型是varchar,但是存储过程传入参数的类型是char,导致最后结存进去的数据末尾多了几个空格. 比如,应该是'2016-12'的,但现在是'2016-12  '. 为了解决这个问题,要修改这个字段的值,去掉尾部的空格,于是运行如下语句: update TB_CUSTOMER_FROZEN set BU…
MySQL性能优化 MySQL性能优化我们可以从以下四个维度考虑:硬件升级.系统配置.表结构设计.SQL语句和索引. 从成本上来说:硬件升级>系统配置>表结构设计>SQL语句及索引,然而效果却是由低到高.所以我们在优化的时候还是尽量从SQL语句和索引开始入手. 硬件升级 硬件升级这里不在过多赘述,升级更好配置的机器.机械硬盘更换为SSD等等. 系统配置优化 调整buffer_pool 通过调整buffer_pool使数据尽量从内存中读取,最大限度的降低磁盘操作,这样可以提升性能.查看bu…