扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:赛迪网 Alice 来源:天新网 2008年3月27日
关键字: Mssql SQL SQL Server 数据库
SQL Server 试图将评估分布式查询的工作尽可能多地委派给 SQL 命令提供程序。如果 SQL 查询只访问存储在提供程序数据源中的远程表,将从原始分布式查询中析取该查询并在提供程序上执行。这将减少从提供程序返回的行数,并使提供程序得以在评估查询时使用它的索引。
在多大程度上将原始分布式查询委派给 SQL 命令提供程序的影响因素包括:
◆SQL 命令提供程序支持的专用语级别
SQL Server 仅在受特定的专用语级别支持时才委派操作。专用语级别由高到低为:SQL Server、SQL-92 Entry 级、ODBC core 和 Jet.专用语级别越高,SQL Server 可以给提供程序委派的操作就越多。
说明 当提供程序对应于 SQL Server 链接服务器时,使用 SQL Server 专用语级别。
每个专用语级别都是其下属级别的超集。因此,如果将操作委派给某个级别,也就将它委派给了这一级之上的所有级别。
始终不将涉及下列各项的查询委派给提供程序,总在本地对这类查询进行评估:
◆bit
◆uniqueidentifier
下列操作/语法元素委派给对应的专用语级别(和所有更高的级别):
◆SQL Server:外联接、CUBE、ROLLUP、模运算符 (%)、位运算符、字符串函数和算术系统函数。
◆SQL-92 Entry 级:UNION 和 UNION ALL。
◆ODBC 核心:带 DISTINCT 的聚合函数和字符串常量。
◆Jet:不带 DISTINCT 的聚合函数、排序 (ORDER BY)、内连接、谓词、子查询运算符(EXISTS、ALL、SOME、IN)、DISTINCT、在上级中没提到的算术运算符、在上级中没提到的常量、以及所有逻辑运算符。
例如,除涉及 CUBE、ROLLUP、外联接、模运算符 (%)、位运算符、字符串函数和算术系统函数的操作外,将所有其它操作都委派给不同时也是 SQL Server 的 SQL-92 Entry 级提供程序。
◆排序规则兼容性
对于分布式查询,所有字符数据的比较语义由字符集和本地 SQL Server 的排序次序定义。Microsoft SQL Server 2000 支持多种排序规则(每一列的排序规则可以各不相同),每个字符值都具有相关联的排序规则属性。SQL Server 2000 解释来自远程数据源的字符数据的排序规则属性,并相应地对其进行处理。
SQL Server 仅在可以确定下列条件时,才能将在字符列上的比较和 ORDER BY 操作委派给提供程序:
◆基础数据源使用列的排序规则序列和字符集。
◆字符比较语义遵从 SQL-92(和 SQL Server)标准。
◆SQL Server 将根据"分布式查询中的排序规则"主题中的表,确定每一列的排序规则。如果远程数据源支持该排序规则,则提供程序被视为排序规则兼容。
◆其它 SQL 支持注意事项
SQL 专用语级别不规定下列 SQL 语法元素:
◆嵌套查询支持
如果提供程序支持嵌套查询(子查询),则 SQL Server 将这些操作委派给提供程序。由于不能通过 OLE DB 属性自动确定嵌套查询支持,系统管理员应设置 NestedQueries 提供程序选项以向 SQL Server 表明提供程序支持嵌套查询。
◆参数标记支持
如果提供程序通过在查询中使用 ? 参数标记支持参数化查询执行,则 SQL Server 可以将参数化查询执行委派给提供程序。由于不能通过 OLE DB 属性自动确定嵌套查询支持,系统管理员应设置 DynamicParameters 提供程序选项以向 SQL Server 表明提供程序支持嵌套查询。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者