WEB开发网
开发学院数据库MSSQL Server SQL Server与Oracle数据库在查询优化上的差异(二... 阅读

SQL Server与Oracle数据库在查询优化上的差异(二)

 2008-08-14 09:54:57 来源:WEB开发网   
核心提示: 不过,根据笔者的了解,SQL Server与Oracle数据库在查询优化上的差异(二)(3),索引与数据文件存放在不同的磁盘中,现在好像只有Oracle 数据库可以做到,所以,用在库存历史交易等数据库表中,而微软的SQL Server数据库则无法实现这一点,这也许根他们的定位不同

不过,根据笔者的了解,索引与数据文件存放在不同的磁盘中,现在好像只有Oracle 数据库可以做到,而微软的SQL Server数据库则无法实现这一点。

这也许根他们的定位不同。甲骨文的数据库系统是针对大型的数据库应用而设计,所以,对于查询的效率要求更加高。

3、 合理利用群集索引来提高SQL语句的执行效率。

在一些特殊情况下,我们需要用到群集索引。如在ERP系统中,采购部门经常需要按月来查询采购订单明细。如需要查询2008年8月份的采购订单明细,而且这份报表需要按照供应商、采购订单号码、产品品号、交货期等进行排序,有时候还需要对供应商进行汇总。这一份简单的报表,用到了范围查询、多个字段记录排序、记录汇总等技术。此时,若能够建立群集索引的话,对于提高这份报表的查询效率,具有非常明显的效果,特别是在数据记录比较多的情况下,效果特别明显。

所谓的群集索引与非群集索引的区别,主要是在于数据存放记录上的差异。若我们采用群集索引的话,在存放记录的时候,会按群集索引指定的规则存放。如对于采购订单中的供应商ID字段采用群集索引,则在存放记录的时候,会把相同的供应商存放在一起。如此的话,在查询的时候,效率就会高得多。而若没有采用群集索引的话,则记录保存时就是按记录保存的先后顺序来进行记录的存储。

在建立群集索引的时候,Oracle 数据库有一个,就是必须在数据库表建立的时候,数据还没导入之前就建立群集索引。也就是说,若数据库表中有记录的话,则无法建立群集索引,这一点我们需要引起注意。

同时,若给某个表中的字段建立了群集索引,在记录保存时,为了能够按照群集索引所指定的规则存储数据,需要对数据表中的记录进行一些调整,以符合原有的规则,如此的话,就会让数据库进行一些额外的动作,从而影响数据库的性能。如在建立某个供应商的采购记录时,为了把相同供应商的记录保存在一起(如我们把供应商ID设置为群集索引),就需要调整原有的记录存储结构。虽然在保存的时候,牺牲一点效率,但是,这对于后续数据查询,效率就会高许多。所以,对于群集索引的话,要让其取得比较高的效果,有一个应用前提,就是这个表中的数据要是经常查询的。如在ERP系统中,有一个库存历史交易报表,这个查询就会经常用到,而且,在查询的过程中,都需要用到范围查询、排序、汇总等功能。所以,用在库存历史交易等数据库表中,则效果会好得多。

上一页  1 2 3 4  下一页

Tags:SQL Server Oracle

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接