SQL Server 2008 处理隐式数据类型转换在执行计划中的增强

通过如下测试验证,首先建立数据分布不平均的测试表。

USE tempdbGOCREATE TABLE _t(    c varchar(50));CREATE INDEX IX_c ON _t( c );GO-- 加入 10000 条数据INSERT _tSELECT (9999 + id) FROM(    SELECT TOP 10000 id = ROW_NUMBER() OVER( ORDER BY GETDATE() )    FROM sys.all_columns a, sys.all_columns)ID-- 将 100 - 10000 的数据变成相同值UPDATE _t SET c = '' WHERE c >= '10100'

然后通过 varhcar和nvarchar值分别测试满足条件1条和满足条件8900条的执行计划预估行数。

ALTER INDEX IX_c ON _t REBUILD;GOSET SHOWPLAN_ALL ONGOSELECT * FROM _t WHERE c = '10005';     -- 实际1条GOSET SHOWPLAN_ALL OFF;GOALTER INDEX IX_c ON _t REBUILD;GOSET SHOWPLAN_ALL ONGOSELECT * FROM _t WHERE c = N'10005';     -- 实际1条GOSET SHOWPLAN_ALL OFF;GOALTER INDEX IX_c ON _t REBUILD;GOSET SHOWPLAN_ALL ONGOSELECT * FROM _t WHERE c = '';          -- 实际9900条GOSET SHOWPLAN_ALL OFF;GOALTER INDEX IX_c ON _t REBUILD;GOSET SHOWPLAN_ALL ONGOSELECT * FROM _t WHERE c = N'';         -- 实际9900条GOSET SHOWPLAN_ALL OFF;GO

得到的查询计划预估行数如下图所示

这里写图片描述

从图中显示的预估数据行数可以看到,对于varchar值(不需要隐匿的数据类型转换),其预估的结果是准确的。但对于nvarchar值,不管指定的值是只有一条数据,还是有8900条数据匹配,其预估的结果都是99.0099,这说明预估并没有考虑我们指定的值。
进一步用变量测试

ALTER INDEX IX_c ON _t REBUILD;GOSET SHOWPLAN_ALL ONGODECLARE @v varchar;SELECT * FROM _t WHERE c = @v; -- varcharGOSET SHOWPLAN_ALL OFF;GOALTER INDEX IX_c ON _t REBUILD;GOSET SHOWPLAN_ALL ONGODECLARE @nv nvarchar;SELECT * FROM _t WHERE c = @nv; -- nvarcharGOSET SHOWPLAN_ALL OFF;GO

结果如下图所示:
这里写图片描述

不管是varchar,还是nvarchar的变量,预估的行数都是99.0099,这个值与使用nvarchar常量值的结果一样,看来SQL Server查询优化器应该确实把 GetRangeThroughConvert 的结果看成变量了,这个应该是设计上考虑不太周全的地方了,毕竟指定固定常量值的时候,GetRangeThroughConvert的结果应该也是确定值才对。

本文讲解了SQL Server的相关内容,更多相关内容请关注创想鸟。

相关推荐:

如何让MySQL中单句实现无限层次父子关系查询

腾讯智影-AI数字人 腾讯智影-AI数字人

基于AI数字人能力,实现7*24小时AI数字人直播带货,低成本实现直播业务快速增增,全天智能在线直播

腾讯智影-AI数字人 73 查看详情 腾讯智影-AI数字人

带进度的SQL Server FileStream如何存取

当忘记 SQL Server 管理员密码该如何处理

以上就是SQL Server 2008 处理隐式数据类型转换在执行计划中的增强的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/383738.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月6日 12:32:22
下一篇 2025年11月6日 12:38:06

相关推荐

  • SQL Server无感系统迁移到MySQL怎么实现

    一、架构综述 通过对现有系统瓶颈的分析,我们发现核心缺陷集中在订单数据缓存分散导致数据各端不一致,各订单应用则与数据库直连又造成可扩展性差。通过实践我们编写中间件抽象并统一了数据访问层,以及基于数据库部署架构镜像构建了订单缓存统一管理热点数据,解决了各端差异。 图1.1  存储系统架构图 二、应用场…

    2025年12月2日 数据库
    000
  • SQL Server数据库怎么安装?

    数据库sql server 2008的安装步骤 1、在网上下载sql server安装文件 2、双击sql server 2008的.exe安装文件,进入【SQL Server 安装中心】。 3、选择左边的安装选项,单击右边的”全新SQL Server独立安装或向现有安装添加功能&#82…

    2025年12月2日 数据库
    000
  • 当忘记 SQL Server 管理员密码该如何处理

    如果忘记 SQL Server 管理员密码,可以使用下面的方式处理 1.  使用 SQL Server 服务器计算机本地 Administrators 组的任何成员登录到 SQL Server 服务器 2.  确定忘记管理员密码的 SQL Server 服务 可以在服务(services.msc)里…

    数据库 2025年11月26日
    100
  • 带进度的SQL Server FileStream如何存取

    SQL Server FileStream 功能的详细参考联机帮助设计和实现 FILESTREAM 存储 这里只是把使用 Win32 管理 FILESTREAM 数据的代码调整了一下,实现带进度的存取,这对于存取较大的文件比较有意义    要使用FileStream,首先要在 SQL Server配…

    数据库 2025年11月26日
    000
  • sql server是什么意思

    sql server是什么?sql server有什么用?相信很多人都听说过sql,但是对于sql server可能很多人还不是很明白,下面我们来总结一下sql server是什么东西。 一:sql server是什么意思 sql server是一种数据库服务器,是由微软公司开发的一种数据库管理的系…

    2025年11月26日 数据库
    000
  • sql server和mysql的区别是什么

    sql server和mysql都是广泛使用的关系数据库管理系统(rdbms),那么它们之间有什么区别?下面本篇文章就来给大家介绍一下sql server和mysql之间区别,希望对你们有所帮助。 MySQL和SQL Server之间的区别: 1、开源 MySQL是一个开源关系数据库管理系统(RDB…

    2025年11月26日 数据库
    100
  • SQL Server和MySQL比较:哪个更适合大规模数据处理?

    SQL Server和MySQL是目前两个非常流行的关系型数据库管理系统(RDBMS)。它们都是用于存储和管理大规模数据的强大工具。然而,它们在处理大规模数据时有一些不同之处。本文将对SQL Server和MySQL进行比较,重点是它们在大规模数据处理方面的适用性。 首先,让我们来了解一下SQL S…

    2025年11月22日
    000
  • SQL Server vs MySQL:哪个更适合移动应用开发?

    SQL Server vs MySQL:哪个更适合移动应用开发? 随着移动应用市场的快速发展,开发人员对于选择适合移动应用开发的数据库管理系统也变得越来越关键。在众多的选择中,SQL Server和MySQL是两个备受开发者青睐的数据库系统。本文将重点比较这两个数据库系统以确定哪个更适合移动应用开发…

    2025年11月22日
    000
  • SQL Server与MySQL较量,如何选择最佳数据库方案?

    随着互联网的不断发展,数据库的选择愈发重要。在众多的数据库中,SQL Server和MySQL是两个备受瞩目的选项。SQL Server是微软公司开发的关系型数据库管理系统,而MySQL则是一种开源的关系型数据库管理系统。那么在SQL Server和MySQL之间如何选择最佳的数据库方案呢? 首先,…

    2025年11月22日
    000
  • SQL Server与MySQL对比:哪个数据库更适合高可用性架构?

    SQL Server与MySQL对比:哪个数据库更适合高可用性架构? 在当今的数据驱动世界中,高可用性是构建可靠和稳定系统的必要条件之一。数据库作为数据存储和管理的核心组件,其高可用性对于企业的业务运转至关重要。在众多的数据库中,SQL Server和MySQL是常见的选择。那么在高可用性架构方面,…

    2025年11月22日
    000
  • SQL Server 数据库实用SQL语句

    SQL Server 数据库实用SQL语句 –查看指定表的外键约束 select * from sysobjects where parent_obj in( select id from syso sql server 数据库实用sql语句 –查看指定表的外键约束  sel…

    数据库 2025年11月10日
    000
  • SQL Server编程系列(1):SMO介绍

    最近在项目中用到了有关SQLServer管理任务方面的编程实现,有了一些自己的心得体会,想在此跟大家分享一下,在工作中用到了SMO/SQLCLR/SSIS等方面的知识,在国内  最近在项目中用到了有关sql server管理任务方面的编程实现,有了一些自己的心得体会,想在此跟大家分享一下,在工作中用…

    2025年11月9日 数据库
    000
  • MySql,Sql Server分区技术浅析

    一.MySqlMySql在5.1以后的版本中加入了分区技术,其不同于以往的分表技术,之前的分表技术是把一张大的表水平(按照一定的逻辑)分成多张表,比如如果我们的User 一.mysql        MySql在5.1以后的版本中加入了分区技术,其不同于以往的分表技术,之前的分表技术是把一张大的表水…

    2025年11月9日
    000
  • sql server是免费的吗?

    sql server 2008 express 是 sql server 的免费版本,是学习和构建桌面及小型服务器应用程序的理想选择,且非常适合由 isv 进行再分发。 Microsoft SQL Server 2008 Express 是一个功能强大且可靠的数据管理系统,它功能丰富,能保护数据,并…

    2025年11月6日 数据库
    000
  • 学sql server有什么用?

    可以使用sql server来:1、对数据库进行查询数据;2、从数据库中取回数据,也可以在数据中插入新的数据;3、更新数据库中的数据和删除数据库中的数据;4、创建新的数据库、创建新的表、创建存储的过程、创建视图;5、设置表、存储过程和视图的权限。 SQL Server 是Microsoft 公司推出…

    2025年11月6日 数据库
    000
  • SQL Server大战MySQL:谁将傲领数据库领域的宝座?

    SQL Server大战MySQL:谁将傲领数据库领域的宝座? 随着信息时代的快速发展,数据库成为了各个行业中不可或缺的重要组成部分。在数据库领域,有两个独占鳌头的巨头SQL Server和MySQL,它们之间的竞争不仅仅是技术的较量,更是对市场份额和用户口碑的争夺。那么,SQL Server和My…

    2025年11月3日 数据库
    100
  • SQL Server还是MySQL?企业数据库选型之道。

    SQL Server还是MySQL?企业数据库选型之道。 在当今的数字化时代,数据库被视为企业发展和运营的重要基石。面对众多的数据库选择,SQL Server和MySQL无疑是最为热门的两个选项。那么,在企业数据库选型时,我们应该如何选择SQL Server还是MySQL呢?本文将从不同角度评估这两…

    2025年11月3日 数据库
    000
  • SQL Server还是MySQL?最新研究揭秘最佳数据库选择。

    SQL Server还是MySQL?最新研究揭秘最佳数据库选择 近年来,随着互联网和大数据的快速发展,数据库的选择成为了企业和开发者们面临的一个重要问题。在众多数据库中,SQL Server和MySQL作为两个最为常见和广泛使用的关系型数据库,备受争议。那么,在SQL Server和MySQL之间,…

    2025年11月3日 数据库
    000
  • SQL Server和MySQL:如何在性能和可扩展性之间做出权衡?

    SQL Server和MySQL:如何在性能和可扩展性之间做出权衡? 引言: SQL Server和MySQL是两个常用的关系型数据库管理系统(RDBMS),在各自的领域中都有着广泛的应用。在开发过程中,我们经常需要在SQL Server和MySQL之间进行选择,并在性能和可扩展性之间做出权衡。本文…

    2025年11月3日 数据库
    000
  • 数据库管理者的抉择:SQL Server还是MySQL?

    数据库管理者的抉择:SQL Server还是MySQL? 在当今技术发展迅猛的时代,作为数据库管理者,选择合适的数据库管理系统成为了一个极其重要的决策。其中,SQL Server和MySQL作为常用的关系型数据库管理系统,备受关注。本文将从以下几个方面对比SQL Server和MySQL,并给出代码…

    2025年11月3日 数据库
    000

发表回复

登录后才能评论
关注微信