随笔分类 - SQL
摘要:内部临时表的类型和产生时机相关,翻译自:http://dev.mysql.com/doc/refman/5.6/en/internal temporary tables.html In some cases, the server creates internal temporary tables
阅读全文
摘要:SQL总结(五)存储过程 概念 存储过程(Stored Procedure):已预编译为一个可执行过程的一个或多个SQL语句。 创建存储过程语法 CREATE proc | procedure procedure_name [{@参数数据类型} [=默认值] [output], {@参数
阅读全文
摘要:上一篇文章《万字总结:学习MySQL优化原理,这一篇就够了!》文末给大家留有两个开放的问题: 有非常多的程序员在分享时都会抛出这样一个观点:尽可能不要使用存储过程,存储过程非常不容易维护,也会增加使用成本,应该把业务逻辑放到客户端。既然客户端都能干这些事,那为什么还要存储过程? JOI
阅读全文
摘要:一、一个例子 数据库需要处理的行数: 189444 1877 13482~~~479亿 如果在关联字段上加上合适的索引: 数据库需要处理的行数:368006 1 3 1~~~110万 MySQL通常是一个请求对应一个线程,其thread_handling是one thread per connect
阅读全文
摘要:SQL优化的思路: 1.优化更需要优化的sql; 2.定位优化对象的性能瓶颈:优化前需了解查询的瓶颈是IO还是CPU,可通过PROFILING很容易定位查询的瓶颈。 3.明确优化目标; 4.从Explain入手; 5.多使用profile;
阅读全文
摘要:说起MySQL的查询优化,相信大家收藏了一堆奇淫技巧:不能使用SELECT 、不使用NULL字段、合理创建索引、为字段选择合适的数据类型….. 你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下性能真有提升吗?我想未必。因而理解这些优化建议背后的原理就尤为重要,希望本文能让你重新审视
阅读全文
摘要:一、用SQL自连接查询处理列之间的关系 SQL自身连接,可以解决很多问题。下面举的一个例子,就是使用了SQL自身连接,它解决了列与列之间的逻辑关系问题,准确的讲是列与列之间的层次关系。SQL代码如下: 1 SELECT FIRST.CNumber, SECOND.PCNumber 2 FROM Co
阅读全文
摘要:一、问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用 系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要的问题之一。系统优化中一个很重要的方面就是SQL
阅读全文
摘要://假设一个for循环 for($i = 0; $i < 10000; $i++) { for ($j = 0; $i < 50; $j++) { } } for($i = 0; $i < 50; $i++) { for ($j = 0; $i < 10000; $j++)
阅读全文
摘要:本文不涉及复杂的底层数据结构,通过explain解释SQL,并根据可能出现的情况,来做具体的优化,使千万级表关联查询第一页结果能在2秒内完成(真实业务告警系统优化结果)。 需要优化的查询:使用explain 出现了Using
阅读全文
摘要:一、为什么要用小表驱动大表 1、驱动表的定义 当进行多表连接查询时, [驱动表] 的定义为: 1)指定了联接条件时,满足查询条件的记录行数少的表为[驱动表] 2)未指定联接条件时,行数少的表为[驱动表](Important!) 忠告:如果你搞不清楚该让谁做驱动表、谁 join 谁,请让 MySQL
阅读全文
摘要:写在前面 1、不要求每个人一定理解 联表查询(join/left join/inner join等)时的mysql运算过程 2、不要求每个人一定知道线上(现在或未来)哪张表数据量大,哪张表数据量小 3、但把mysql客户端(如SQLyog,如HeidiSQL)放在桌面上,时不时拿出来 explain
阅读全文
摘要:最近没怎么搞SQL优化,碰巧数据库被慢查询搞挂了,于是拿来练练手。 问题 通过「SHOW FULL PROCESSLIST」语句很容易就能查到问题SQL,如下: SELECT post. FROM post INNER JOIN post_tag ON post.id = post_tag.post
阅读全文
摘要:写在前面的话: 不要求每个人一定理解 联表查询(join/left join/inner join等)时的mysql运算过程; 不要求每个人一定知道线上(现在或未来)哪张表数据量大,哪张表数据量小; &
阅读全文
摘要:解释一: These are the following conditions under which temporary tables are created. UNION queries use temporary tables. Some views require temporary tab
阅读全文
摘要:using filesort 一般人的回答是: “当行数据太大,导致内存无法容下这些数据产生的临时表时,他们就会被放入磁盘中排序。” 很不幸,这个答案是错的 ,临时表在太大的时候确实会到磁盘离去,但是EXPLAIN不会显示这些。 The truth is, filesort
阅读全文
摘要:Using filsort文档中的解释: Mysql需要额外的一次传递,以找出如何按排序顺序检索行,通过根据联接类型浏览所有行并为所有匹配where子句的行保存排序关键字和行的指针来完成排序,然后关键字被排序,并按排序顺序检索行。额外的传递是指什么? Mysql> show create ta
阅读全文
摘要:先看一段sql: [sql] view plain copy print?<span style="font size:18px;">SELECT FROM &
阅读全文
摘要:派生表和视图的性能 从MySQL 4.1开始,它已经支持派生表、联机视图或者基本的FROM从句的子查询。 这些特性之间彼此相关,但是它们之间的性能比较如何呢? MySQL 5.0 中的派生表似乎和视图实现的方式不同,尽管我从合并的代码基数来看觉得在查询优化上应该是一样的。 派生表仍然以临时表的方式显
阅读全文
摘要:优化GROUP BY语句 默认情况下,MySQL对所有GROUP BY col1,col2...的字段进行排序。这与在查询中指定ORDER BY col1,col2...类似。因此,如果显式包括一个包含相同的列的ORDER BY子句,则对MySQL的实际执行性能没有什么影响。 如果查询包括GROUP
阅读全文

浙公网安备 33010602011771号