打印本文 打印本文 关闭窗口 关闭窗口
把Oracle数据库移植到Microsoft SQL Server 7.0
作者:武汉SEO闵涛  文章来源:敏韬网  点击数13397  更新时间:2009/4/22 22:06:51  文章录入:mintao  责任编辑:mintao
SET语句

SET语句可以在你的工作会话、运行中的触发器或者存储过程的生命期内设定SQL Server查询处理选项。

SET FORCEPLAN ON语句强制优化器按照表在FROM子句出现的顺序处理连接,同Oracle优化器所用的ORDERED提示是类似的。

SET SHOWPLAN_ALL和SET SHOWPLAN_TEXT语句只返回查询或者语句执行方案的信息,而不会执行查询或者语句本身。要执行查询或者语句。需要把适当的显示方案的语句设定为OFF。然后就可以执行查询或者语句了。SHOWPLAN语句的结果跟Oracle的EXPLAIN PLAN工具是类似的。

如果SET STATISTICS PROFILE是ON,则每一个执行的查询除了返回正常的结果集合,还加上一个额外的结果集合,该集合显示了一个查询执行的快照。其它选项包括SET STATISTICS IO和SET STATISTICS TIME。

Transact-SQL语句处理包括两个阶段,编译和执行。NOEXEC选项编译每一个查询但不执行该查询。在NOEXEC设定为ON以后,后来的语句将不再执行,一直到NOEXEC设定为OFF。

SET SHOWPLAN ON

SET NOEXEC ON

go

SELECT * FROM DEPT_ADMIN.DEPT,

STUDENT_ADMIN.STUDENT

WHERE MAJOR = DEPT

go

STEP 1

The type of query is SETON

STEP 1

The type of query is SETON

STEP 1

The type of query is SELECT

FROM TABLE

DEPT_ADMIN.DEPT

Nested iteration

Table Scan

FROM TABLE

STUDENT_ADMIN.STUDENT

Nested iteration

Table Scan

 

查询优化

Oracle需要使用提示来影响它的基于开销的优化器的操作和性能。Microsoft SQL Server的基于开销的优化器不需要使用提示来帮助其查询评估过程。但是,它们仍然可以在某些情况下使用。

INDEX = {index_name | index_id}为那个表指定要用的索引名称或者ID。如果index_id为0,则强制该表进行扫描,而为1的index_id则强制使用一个分簇的索引,如果有的话。这跟Oracle中使用的索引提示是类似的。

SQL Server的FASTFIRSTROW指示优化器使用一个未分簇的索引,如果它的列顺序同ORDER BY子句相匹配的话。该提示同Oralce中的FIRST_ROWS提示是类似的

使用ODBC

本部分提供Oracle和SQL Server使用ODBC的方法的信息和关于开发和移植使用ODBC的应用程序的信息。

 

推荐的转换策略

如果要把你的应用程序从Oracle转换到SQL Server上,推荐采用下面的过程:

  1. 如果你的应用程序使用Oracle Pro*C或者Oracle调用接口(Oracle Call Interface,OCI)的话,考虑把它转换到ODBC。
  2. 理解SQL Server缺省的结果集合和游标选项,然后选择针对你的应用程序的最有效的提取策略。(fetching strategy)。
  3. 重新映射Oracle ODBC SQL数据类型到合适的SQL Server ODBC SQL数据类型。
  4. 使用ODBC Extended SQL扩展来创建类属的SQL语句。
  5. 决定SQL Server应用程序是否需要手工提交模式。

测试你的应用程序的性能,并对程序做必要的修改。

 << 上一页  [11] [12] [13] [14] [15] [16] [17] 

打印本文 打印本文 关闭窗口 关闭窗口