我来自MSSQL背景,当我问我公司的人是否在某些列上创建了索引时,他们会说是,但请指出这些事情称为逻辑文件。
在iSeries Navigator中,这些逻辑文件显示在“视图”类别下。当我单击“索引”类别时,没有任何内容,这让我相信实际上没有在任何列上创建索引,至少我理解它们。逻辑文件似乎是按某些列排序的视图。
所以我的问题是,逻辑文件和索引(MSSQL意义上的索引)是一回事吗?
答案 0 :(得分:7)
虽然之前的答案不一定错误,但它们并不能提供完整的图片 请参阅两种类型的“逻辑文件” - 键控和未键控。
所有逻辑文件,无论是否有键,实际上都显示在iSeries Navigator中作为视图(我认为只有'实际' - SQL - 指示显示为指示)。
我...实际上并不确定如何确定逻辑文件是否来自Navigator。在iSeries上,我的公司有一个(我假设的)自定义命令来显示给定物理文件的各种逻辑文件(及其键)(也显示标记)。但是,键控列很容易发现逻辑文件定义 - 让一些AS / 400伙伴向您展示定义,以及要查找的内容。
答案 1 :(得分:4)
逻辑文件结合了两个视图(列选择和表连接)和索引(行排序)的功能。它们通常用作索引,但在导航器中显示为视图。另外,物理文件(不是表格)也可以有索引。
使用物理和逻辑文件在DB2 for iSeries中实现SQL表,视图和索引。主要区别在于数据库检查数据完整性。它在写入表时检查并在读取文件时进行检查。您可以将垃圾数据放入文件中,但不能放入表格中。
答案 2 :(得分:3)
SQL创建的索引/视图与通过DDS创建的逻辑文件之间存在许多细微差别(这是为逻辑文件(LF)编写源文件并将其编译为LF对象的方式)。
他们是相同的事情吗?那是一个定义没有。但是有非常类似的东西,在大多数情况下你也可以使用。你可能永远不会遇到任何不同,但也有可能,有一天你站在无法解释的情况之前,因为存在差异。以下是我到目前为止所学到的一些差异(我现在还记得)。 (我将在这里讨论LF - 这是逻辑文件 - 和PF(物理文件).PF或多或少是你在SQL中称为表的方式,但与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系统上作为物理文件的表之间的差异。