为什么仅使用索引无法实现性能改进,因此需要其他技术(如表分区)?问题只与性能有关,当然不同的分区可以放入不同的表空间,这具有索引无法实现的其他效果。
或者换句话说,只有在性能方面:是否可以通过索引实现与表分区相同的性能改进?
显然,保留几个不同的索引会对插入和删除性能产生负面影响。查询性能如何:在表上保留太多索引是否有意义?在任何情况下,如果添加索引(当然对于使用索引的查询),查询性能是否会提高,或者甚至有可能因索引过多而导致查询性能下降,因为有必要查阅所有索引以获得结果?
如果表上有不同的索引:它们会被全部考虑,还是仅从优化器的角度来看是最好的?Oracle 是否实现了多维索引?
哪些数据库使用真正的多维索引?oracle 是否曾经使用多个索引从表中获取数据,还是总是使用似乎具有最高选择性的索引?其他dbms怎么样?
oracle中如何实现物化视图?我在 oracle 中创建了一个物化视图。我现在看到的是一张有工作的很普通的桌子。物化视图是否在 oracle 中转换为表和作业?
因为我看到可以指定像 sysdate + 1 这样的表达式,所以这里是我的问题:
是否可以在 oracle 中为物化视图指定刷新的确切时间?
是否有可能一切都从凌晨 2 点开始,而没有人使用我的应用程序中的数据库?
必须做什么才能将范围分区引入到 oracle 中现有的非分区表中?有没有一种简单而安全的方法来做到这一点?
特别是在表上有许多约束(如外键)的情况下。
为了对现有的未分区表进行分区,可以使用 EXCHANGE PARTITION 或 DBMS_REDEFINITION。如何决定为表分区选择哪些可能性。这是否取决于表中有多少数据?一种操作比另一种更安全吗?
我需要访问 user_mviews 或 all_mviews 表以获取有关我的应用程序中物化视图的元信息。读取 user_mviews 表需要哪些授权?
使用双表通过直接插入读取序列的 nextval 时是否会影响性能?
我目前正在优化大型 IT 系统中的性能,我发现几乎所有的 sequence.nextval 都是通过以下方式读取的:
SELECT SOME_SQ.NEXTVAL INTO someID FROM DUAL;
insert into .... (someId)
Run Code Online (Sandbox Code Playgroud)
我想知道在标准上使用上述方式时性能是否会受到影响:
insert into .... (some_sq.nexval, ...)
Run Code Online (Sandbox Code Playgroud)
谢谢