SQL Server 2008处理隐式数据类型转换的示例分析
发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,小编给大家分享一下SQL Server 2008处理隐式数据类型转换的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧
千家信息网最后更新 2024年09月22日SQL Server 2008处理隐式数据类型转换的示例分析
小编给大家分享一下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 2008处理隐式数据类型转换的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
数据
结果
实际
测试
类型
变量
篇文章
示例
分析
处理
内容
常量
条件
还是
查询
周全
相同
不怎么
只有
地方
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
cn域名 根服务器
android软件开发老师
无锡小型软件开发行业
统信系统安装神舟通用数据库
网络安全分区域划分
数据库关系有什么类型
舞钢软件开发公司
北海网络安全查处
精锐达网络技术有限公司
专业的网络安全建设价格
apex哪个服务器打rank
网络安全保障方案介绍
铁科院网络安全
网络技术实验室宣传挂图
远程管理本地服务器
网络信息网络安全的三个时代
华硕管家服务器没有响应
达梦数据库行列转换
网络安全金典案例
视频网站如何连接云服务器
中国网络安全大赛到底是什么
向党说句心里话网络安全书信征文
建网站服务器详细步骤
轨道 网络安全风险隐患
抓网络安全责任
数据库怎么设置运行查询
mc服务器作弊mod
react 服务器配置
番禺网络安全建设联系方式
软件开发部门人员考核表