关闭

mysql最新版sql语句优化详解来自官网直译(14)

1.13ORDER BY Optimization 排序优化。 这部分描述当mysql能够使用一个索引去满足排序条件,filesort算法会被使用如果一个索引不能用的时候,和执行计划的信息关于优化器对于order by的可用信息。 >使用索引来排序 >优化器使用文件排序 >原始的文件排序算法 >修改后的文件排序算法 >在内存中的文件排序算法 >文件排序算法的对比 >排序优化的影响 ...
阅读(2) 评论(0)

mysql最新版sql语句优化详解来自官网直译(13)

1.12 IS NULL Optimization is null  查询的优化 mysql能够完成同样的优化在col_name is null,通过采用col_name=constant_value来完成。例如,mysql可以使用索引或者是范围扫描来查找null值对于is null的查询。 例如: SELECT * FROM tbl_name WHERE key_col IS NULL; ...
阅读(75) 评论(0)

mysql最新版sql语句优化详解来自官网直译(12)

1.11 Block Nested-Loop and Batched Key Access Joins(块式嵌套循环和批量key访问连接)。 在mysql,一个批量key访问(BKA)连接算法可以使用在通过索引扫描而连接的表和一个连接缓存中。BKA算法支持内连接,外连接和semi-join操作,包括嵌套外连接。而BKA的好处包括通过提高表扫描效率来提高连接效率。当然循环嵌套块(BNL)算法原来被...
阅读(9) 评论(0)

mysql最新版sql语句优化详解来自官网直译(11)

1.10 Multi-Range Read(MRR) Optimization(多范围读取优化) 当使用一个范围扫描在一个二级索引上查找行数据会导致许多随机的磁盘访问对于基本表的查询,如果表比较大,并且没有存储在存储引擎的缓存中的话。多范围读取的磁盘扫描优化,mysql通过首先只扫描索引来减少对范围查询中会引起的随机磁盘访问次数并且收集相关的keys集合。然后被存储的keys和通过主键顺序得到的...
阅读(107) 评论(0)

mysql最新版sql语句优化详解来自官网直译(10)

1.9 Outer Join Simplifiation.外部连接简单化 查询中from条件中表的表达式可以有多种方式简单化。 在分析阶段,包含右外连接操作的查询可以被转换为值包含左连接操作的查询。在一般情况下,转变回产生在如下的右连接中:(T1, ...) RIGHT JOIN (T2, ...) ON P(T1, ..., T2, ...) 变成等价的左连接:(T2, ...) LEFT...
阅读(14) 评论(0)

mysql最新版sql语句优化详解来自官网直译(9)

1.8Left Join and Right Join Optimization(左连接和右连接的优化): mysql执行一个A left join B的连接条件如下: >表B是一个依赖于A和A依赖的所有其他表共同决定的集合。 >表A是一个依赖于用于left join条件的除B表意外的所有表的一个集合。 >LEFT JOIN条件被用来决定怎么样检索B表中的行。(换句话说,任何在where中...
阅读(46) 评论(0)

mysql最新版sql语句优化详解来自官网直译(8)

Nested Join Optimization(嵌套连接的优化) 允许嵌套连接的表达式语法。下面的描述引用在13.2.9.2的连接语法。 table_factor的语法是对标准sql比较的扩展。后者只接受table_reference,而不是一个括号内的list集合。如果我们考虑每一个在table_reference集合中的逗号在内连接中都是等价的,那么这可以被看做是一个保守的扩展。 例如...
阅读(31) 评论(0)

mysql最新版sql语句优化详解来自官网直译(7)

1.6Nested-Loop Join Algorithms(嵌套循环连接算法) mysql通过使用一个嵌套循环算法或者是它的演变来执行表之间的连接。 >嵌套循环连接算法 一个简单的循环嵌套连接(NLJ)算法一次循环读取一行数据在第一张表中,通过每一行都嵌套循环处理与下一张表连接。这个过程被重复多次直到其他的多有表都被连接。 假设一个涉及到三张表t1,t2,t3的连接被执行通过如下的连接类...
阅读(51) 评论(0)

mysql最新版sql语句优化详解来自官网直译(6)

1.5index Condition Pushdown Optimization(索引条件压入优化) 索引条件压入(ICP)是一个优化对于mysql从表中使用索引来检索行时。没有ICP,存储引擎遍历索引定位表中的行数据,然后返回数据到mysql服务器评估WHERE条件对于行数。如果ICP可以用,如果where条件的部分可以只使用索引列来做出评估,mysql服务压这部分满足where条件的数据入存...
阅读(49) 评论(0)

mysql最新版sql语句优化详解来自官网直译(5)

Engine Condition Pushdown Optimization(引擎压入条件优化) 这个优化用来提高直接对比一个无索引列和常量值比较的效率。在这种情况下,条件压入存储引擎去评估。这种优化只能用在NDB存储引擎上。 对于NDB集群,这个优化能够排除那些不匹配的行数从集群中的数据节点到mysql服务器之间通过网络传输的数据,并且如果使用了优化比不使用能够提高查询5到10倍的效率。 ...
阅读(116) 评论(0)

mysql最新版sql语句优化详解来自官网直译(4)

索引合并是使用多个范围扫描去检索行数据并最终合并他们的结果为一个结果集的方法。这种合并至能发生在单一表的索引扫描上;不能夸表合并扫描结果。这个合并会产生union并集,交集,或者是既有并集又有交集。 例如如下的查询将会使用索引合并: SELECT * FROM tbl_name WHERE key1 = 10 OR key2 = 20; SELECT * FROM tbl_name ...
阅读(110) 评论(0)

mysql最新版sql语句优化详解来自官网直译(3)

范围查询的优化 范围访问方法使用单一索引去检索表中的数据包含一个或者多个索引值的行记录。范围查询能够用于单一索引或者联合索引。下面的部分说明了优化器使用范围查询的条件。 >范围访问方法对单一索引  对于单一索引,索引间隙值可以很容易的通过在where条件中正确的表现出来,表示为区域条件而不是间隙值  给一个单一索引值定义一个区域条件如下:   1)对于BTREE和HASH索引,当使用=,...
阅读(51) 评论(0)

mysql最新版sql语句优化详解来自官网直译(2)

这部分讨论的优化是针对WHERE条件的。通过SELECT语句来举例,但是同样的优化也适用于DELETE和UPDATE中的WHERE语句。    注意:因为mysql优化器的工作一直在继续,所以不可能把mysql执行优化的全部信息都展示在这里。 你也许会在牺牲可读性的前提下重写查询从而来提高算法操作速度。因为mysql会自动去做同样的优化操作,所以你应该避免这样做,从而保证你的查询更加可理解且具...
阅读(46) 评论(0)

mysql最新版sql语句优化详解来自官网直译(1)

8.2 sql语句优化 大致内容如下: 8.2.1:SELECT语句的优化 8.2.2:优化子查询,派生表和试图引用 8.2.3:优化INFORMATION_SCHEMA查询 8.2.4:优化数据改变语句 8.2.5:优化数据库权限 8.2.6:其他优化建议 数据库应用的核心逻辑是完成sql语句的执行,sql语句可以直接提交或者通过API后台提交。该部分指南帮助提高各种my...
阅读(43) 评论(0)

mysql最新版explain详解来自官网直译(6)

为了得到执行计划的具体信息是以一个命名连接生成的,命令格式如下: EXPLAIN [options] FOR CONNECTION connection_id; EXPLAIN FOR CONNECTION返回的EXPLAIN信息就是当前被给出的连接所执行的查询的解析信息。因为数据的改变,也许会产生不同的结果当执行EXPLAIN去评估查询文本时。这种行为的不同能够对诊断更多瞬时行为问题有帮助。...
阅读(43) 评论(0)
52条 共4页1 2 3 4 下一页 尾页
    个人资料
    • 访问:11170次
    • 积分:576
    • 等级:
    • 排名:千里之外
    • 原创:28篇
    • 转载:4篇
    • 译文:20篇
    • 评论:0条
    文章分类