知识大全 SQL Server执行SQL语句时内存占用特点[4]

Posted

篇首语:历览千载书,时时见遗烈。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 SQL Server执行SQL语句时内存占用特点[4]相关的知识,希望对你有一定的参考价值。

SQL Server执行SQL语句时内存占用特点[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  在两个表都有聚集索引情况下 逻辑读最小 每个表只有 到 次 而且只有实际需要输出的数据才会被读入内存页 两个表都有非聚集索引情况下 消耗的逻辑读和内存资源近似

  测试 执行Merge Join

   执行全表选取或者低选择性选取

  执行SQL:

以下是引用片段  Select * From P_Order A   Inner merge JOIN P_User B ON A MobileNo=B MobileNo

  如果两张表都没有任何索引 则两张表都要进行全表扫描 所有的数据都要读入内存页

  逻辑读数近似等于两张表的数据页总和 SQL Server处理过程中将使用到临时表

  只有一张表有聚集索引的情形类似 SQL Server处理过程中将使用到临时表 并且读入所有的数据页到内存

  如果两张表都有聚集索引 尽管两表的数据都会被读入内存页 但逻辑读数已经大大减少 等于其中一张表总数据内存页数加上最终输出的数据页数 而且SQL Server处理过程中将不需要再使用临时表

   执行高选择性选取

  对于这样的高选择性SQL语句 SQL Server 将提示无法生成执行计划

以下是引用片段 Select * From P_Order A   Inner merge JOIN P_User B ON A MobileNo=B MobileNo   Where A MobileNo=

  但可以执行

以下是引用片段  Select * From P_Order A   Inner merge JOIN P_User B ON A MobileNo=B MobileNo   Where A MobileNo<=  (注 最终结果只有 条)

  这样的属于低选择性语句 但最终结果也很少的语句 如前面所述 这种情况下 采用netsted loop联接效率可能更高

   执行高选择性选取

  执行如下的SQL语句

以下是引用片段  Select * From P_Order A   Inner merge JOIN P_User B ON A MobileNo=B MobileNo   Where A MobileNo=

  在两个表都没有任何索引情况下 两张表都将执行全表扫描 要读入所有的数据页到内存 总体逻辑读取决于两表的数据页数

  在一个表有聚集索引或者非聚集索引情况下 该表将执行Index Seek 另一个表将出现全表扫描 内存数据缓冲区中 将有一张表只读入最终数据所在的数据页 一张表读入全部数据页 逻辑读数取决于表在联接中的秩序 以及无索引表的数据页数

  在两个表都有聚集索引情况下 逻辑读最小 每个表只有 到 次 而且只有实际需要输出的数据才会被读入内存页 两个表都有非聚集索引情况下 消耗的逻辑读和内存资源近似

  测试 执行Merge Join

   执行全表选取或者低选择性选取

  执行SQL:

以下是引用片段  Select * From P_Order A   Inner merge JOIN P_User B ON A MobileNo=B MobileNo

  如果两张表都没有任何索引 则两张表都要进行全表扫描 所有的数据都要读入内存页

  逻辑读数近似等于两张表的数据页总和 SQL Server处理过程中将使用到临时表

  只有一张表有聚集索引的情形类似 SQL Server处理过程中将使用到临时表 并且读入所有的数据页到内存

  如果两张表都有聚集索引 尽管两表的数据都会被读入内存页 但逻辑读数已经大大减少 等于其中一张表总数据内存页数加上最终输出的数据页数 而且SQL Server处理过程中将不需要再使用临时表

   执行高选择性选取

  对于这样的高选择性SQL语句 SQL Server 将提示无法生成执行计划

以下是引用片段 Select * From P_Order A   Inner merge JOIN P_User B ON A MobileNo=B MobileNo   Where A MobileNo=

  但可以执行

以下是引用片段  Select * From P_Order A   Inner merge JOIN P_User B ON A MobileNo=B MobileNo   Where A MobileNo<=  (注 最终结果只有 条)

  这样的属于低选择性语句 但最终结果也很少的语句 如前面所述 这种情况下 采用netsted loop联接效率可能更高

cha138/Article/program/SQLServer/201311/22450

相关参考

知识大全 SQL Server执行SQL语句时内存占用特点[2]

SQLServer执行SQL语句时内存占用特点[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 SQL Server执行SQL语句时内存占用特点[1]

SQLServer执行SQL语句时内存占用特点[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 SQL Server占用内存的解决方法

SQLServer占用内存的解决方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  经常有网友会

知识大全 SQL Server 7.0 函数及SQL语句相关问题

SQLServer7.0函数及SQL语句相关问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 用SQL语句完成SQL Server数据库的修复

用SQL语句完成SQLServer数据库的修复  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  使

知识大全 SQL Server 数据库管理常用的SQL和T-SQL语句[3]

SQLServer数据库管理常用的SQL和T-SQL语句[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 SQL Server 数据库管理常用的SQL和T-SQL语句[2]

SQLServer数据库管理常用的SQL和T-SQL语句[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 SQL Server 数据库管理常用的SQL和T-SQL语句[1]

SQLServer数据库管理常用的SQL和T-SQL语句[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 SQL Server中动态和静态内存分配

SQLServer中动态和静态内存分配  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  SQL服务

知识大全 浅析Sybase SQL Server内存分配

浅析SybaseSQLServer内存分配  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  我们知