Teradata 是否可以创建数据库/表/视图别名?

Teradata 是否可以创建数据库/表/视图别名?,teradata,Teradata,假设有一个名为theirdb的其他人拥有的数据库,它的视图非常慢,名为slowview。我有一个定期查询此视图的应用程序,但是,因为它花费的时间太长,我希望将其具体化到我拥有的数据库中的一个表中(mydb.materializedview) Teradata中有没有一种方法可以创建alias数据库对象,这样我就可以像从RDB.slowview中选择*,但实际上是从mydb.materializedview中选择 我需要对他们的观点做一些严格的测试,但速度太慢了,我几乎没有时间测试任何东西。另一个

假设有一个名为
theirdb
的其他人拥有的数据库,它的视图非常慢,名为
slowview
。我有一个定期查询此视图的应用程序,但是,因为它花费的时间太长,我希望将其具体化到我拥有的数据库中的一个表中(
mydb.materializedview

Teradata中有没有一种方法可以创建alias数据库对象,这样我就可以像从RDB.slowview中选择*,但实际上是从mydb.materializedview中选择


我需要对他们的观点做一些严格的测试,但速度太慢了,我几乎没有时间测试任何东西。另一个选项是编辑代码,使其从mydb.materializedview中读取,但不幸的是,在这种情况下,这不是一个选项。

Teradata不允许您在对象之间创建别名或符号链接

如果对象在应用程序中完全由数据库名和视图名限定,那么您的选项将受到更多限制。您必须为它们的视图定义创建一个备份,然后它们将您的物化表放在同一个数据库中。这显然最好在计划的应用程序停机期间完成

如果应用程序中的对象不是完全由数据库名称和视图名称限定的,并且依赖于默认的数据库设置或应用程序变量,那么您就有了更大的灵活性。如果所有工作都是在视图级别完成的,则可以在另一个数据库中复制环境,在该数据库中,您计划使用其
slowview
的物化版本。然后,通过更改用户的默认数据库或应用程序变量,您可以将其指向复制环境以完成测试

此外,您可以尝试使用连接索引覆盖(部分或全部)构成
slowview
的查询。这允许您保持代码库在应用程序中的原样,但对于联接索引可以满足的查询,优化器将使用联接索引。请记住,连接索引确实会产生成本,因为它本质上是用于构造它的SQL的物化版本。这意味着必须考虑额外的IO和变更管理问题


最后,您可以尝试在
slowview
中的对象上创建额外的二级索引或散列索引,以提高其性能。

它们的视图在我们的应用程序中确实是完全限定和硬编码的,因此我不能使用默认数据库。我也不拥有他们的视图,所以修改索引是行不通的。这就留下了可能的连接索引解决方案,但我认为我在这里运气不好,因为视图在代码中是完全限定的。我已经要求所有者重命名他们的视图,然后临时用旧名称将它们重新创建为物化表。我们将看看这是否有效,但我将接受您的答案,即在Teradata中不可能使用别名/符号链接。添加连接索引、哈希索引或辅助索引不一定需要在现有视图中修改任何代码即可实现。您是否有可以在其中进行测试的非生产环境?