搜索了一段时间后,我在这里发布了这个问题,因为我找不到在任何地方发布的此类问题。
我们的应用程序有一个包含274列(无LOB或Long Raw列)的表,并且在8年的时间里,该表开始具有链接的行,因此任何全表扫描都会影响性能。
当我们深入研究时,发现大约50列未在应用程序中的任何地方使用,因此可以立即删除。但是这里的挑战是应用程序必须进行许多代码更改才能实现此目的,并且我们已经将基础数据公开为服务,其他服务也正在使用该服务。因此,我们暂时无法选择更改代码。
我们认为的另一种选择是,是否可以将这50列作为虚拟列始终设置为NULL,那么我们只需要对表加载过程进行更改,其余所有都将保持原样。但是我需要专家的建议,是否将虚拟列添加到表中不会再次构造链接的行。此解决方案适用于给定的问题陈述吗?
谢谢 拉米
答案 0 :(得分:1)
Oracle每个块仅允许255列。对于具有255列以上的表,它将行分成多个块。 Find out more。
您的表格有274列,因此您具有链接的行,这是因为表格固有的结构而不是数据占用的空间。将五十列全都设为null不会改变这一点。
因此,如果要消除链接的行,则确实需要删除行。当然,您不想更改所有应用程序代码。因此,您可以尝试的是: