AS / 400 DB2逻辑文件与表索引

时间:2011-08-12 19:19:17

标签: sql indexing db2 ibm-midrange

我来自MSSQL背景,当我问我公司的人是否在某些列上创建了索引时,他们会说是,但请指出这些事情称为逻辑文件。

在iSeries Navigator中,这些逻辑文件显示在“视图”类别下。当我单击“索引”类别时,没有任何内容,这让我相信实际上没有在任何列上创建索引,至少我理解它们。逻辑文件似乎是按某些列排序的视图。

所以我的问题是,逻辑文件和索引(MSSQL意义上的索引)是一回事吗?

7 个答案:

答案 0 :(得分:7)

虽然之前的答案不一定错误,但它们并不能提供完整的图片 请参阅两种类型的“逻辑文件” - 键控和未键控。

  1. 未键控的逻辑文件确实等同于视图,并且不会充当索引。
  2. 键控逻辑文件等同于索引(从我记忆中,它们实际上在底层系统中以相同的方式实现)。这些按照您对索引的预期行事。
  3. 所有逻辑文件,无论是否有键,实际上都显示在iSeries Navigator中作为视图(我认为只有'实际' - SQL - 指示显示为指示)。
    我...实际上并不确定如何确定逻辑文件是否来自Navigator。在iSeries上,我的公司有一个(我假设的)自定义命令来显示给定物理文件的各种逻辑文件(及其键)(也显示标记)。但是,键控列很容易发现逻辑文件定义 - 让一些AS / 400伙伴向您展示定义,以及要查找的内容。

答案 1 :(得分:4)

逻辑文件结合了两个视图(列选择和表连接)和索引(行排序)的功能。它们通常用作索引,但在导航器中显示为视图。另外,物理文件(不是表格)也可以有索引。

使用物理和逻辑文件在DB2 for iSeries中实现SQL表,视图和索引。主要区别在于数据库检查数据完整性。它在写入表时检查并在读取文件时进行检查。您可以将垃圾数据放入文件中,但不能放入表格中。

答案 2 :(得分:3)

SQL创建的索引/视图与通过DDS创建的逻辑文件之间存在许多细微差别(这是为逻辑文件(LF)编写源文件并将其编译为LF对象的方式)。

他们是相同的事情吗?那是一个定义没有。但是有非常类似的东西,在大多数情况下你也可以使用。你可能永远不会遇到任何不同,但也有可能,有一天你站在无法解释的情况之前,因为存在差异。以下是我到目前为止所学到的一些差异(我现在还记得)。 (我将在这里讨论LF - 这是逻辑文件 - 和PF(物理文件).PF或多或少是你在SQL中称为表的方式,但与LF和索引/视图一样,我不会打电话他们一样)

  • LF可以有select / omit语句,用于过滤PF的哪些行。 小心那些!它们不仅常常令人困惑,而且还会对SQL查询产生重大影响。现代查询优化器(SQE)会忽略这样的LF,甚至可能导致SQE根本不被使用,只是因为存在(取决于您的SQL配置)。您通常可以使用排序索引和选择获得相同的行为。
  • LF可以共享数据路径(LF A具有索引col1,col2,col3和LF B,索引col1,col2,col4应该共享索引afaik),sql-indices不这样做(但是这个优势应该是不如下一个缺点那么重要)
  • 指数可以有更大的页面大小。据我所知,这可以在巨大的桌子上产生差异)。
  • 当您重命名PF并从其DDS源重新命名时,指数和LF可能会有不同的行为。索引应保留在重命名的对象上,而LF应引用具有旧名称的新对象

这些差异与以下事实有关:IBM DB2 / 400系统是很久以前创建的,当时没有人谈论SQL并且从那时起就开发了。但是,由于SQL变得重要,IBM还为其使用良好的数据库引入了SQL支持。所以索引/视图需要支持这些东西,SQL需要它们。另一方面,LF必须与AS / 400s历史保持向下兼容。那些不同。因此,如果不放弃对一个人的支持,他们就不可能一样。但他们试图相当接近。

答案 3 :(得分:1)

在寻找其他东西时遇到了这个讨论,所以我想我也会添加一个贡献。 PF和LF通常被称为"原生文件"由于它们出生时具有这个系统的祖先(S / 38,即使在此之前也不确定),而表/视图后来用SQL引入。 虽然现在SQE在优化过程中同时考虑了PF / LF和表/视图,但两者之间的另一个巨大差异是,虽然两者都可以在任何SQL语句中使用,即使嵌入在已编译的程序中,但只有PF / LF可以在本机中使用编译程序。 考虑到编译的程序,PF / LF记录格式的变化意味着重新绑定/重新编译过程,而在表/视图更改的情况下不需要它,除非它们是从外部SQL语句引用的。

答案 4 :(得分:0)

根据此description,AS / 400 DB2逻辑文件在大多数其他关系数据库中称为视图。我不得不说我不认为逻辑文件与索引相同。

答案 5 :(得分:0)

在寻找其他东西时遇到了这个讨论,所以我想我会做出贡献。键控逻辑文件确实提供索引的功能。但是,索引的性能优于逻辑文件,DB2 for IBM i中的查询优化器更可能使用SQE(SQL查询引擎)而不是旧的且效率较低的CQE(“经典”查询引擎)来优化查询(如果它)可以使用索引。默认情况下,索引的页面大小比逻辑文件大,这有助于提高性能。在IBM i操作系统的最新版本中,可以指定逻辑文件的页面大小,因此索引的优势并不像以前那么重要。 IBM的战略方向是将数据库性能改进工作集中在较新的SQL DDL定义的数据库对象(表,索引等)上,并忽略较旧的旧DDS定义对象(物理和逻辑文件)。

答案 6 :(得分:0)

IBM的这份PDF文档解释了DB2中的索引方法,这对我很有帮助,以便了解使用SQL创建的表或在AS400系统上作为物理文件的表之间的差异。

IBM DB2 for i indexing methods and strategies