![]() |
1
5
正如已经指出的,Oracle11g不会根据以前的经验动态构建索引。在适当的条件下添加一个指数会产生你注意到的数量级的改进,这当然是可能的,而且确实经常发生。 但正如已经指出的,50K(似乎很短?)行与Oracle无关。事实上,Oracle数据库具有大量的智能,可以最有效地扫描没有索引的数据。Oracle RDBMS的每一个新版本都能更好地移动大量数据。我建议您,与MySQL相比,即使没有索引,Oracle也非常接近它的“最佳”时间,这是因为Oracle只是一个更智能的数据库。 然而,Oracle RDBMS确实有许多与您打开的主题区域相关的功能。例如: 10G引入了一个称为自动SQL调优的功能,该功能通过一个名为SQL调优顾问的GUI公开。此功能旨在单独深入分析查询,并包括对可选查询计划进行假设分析的能力。这包括模拟实际不存在的索引。但是,这并不能解释您所看到的任何性能差异,因为该特性需要打开,并且实际上它不构建任何索引,它只建议DBA创建索引等。 11g包括自动统计收集,启用后,将根据这些对象上的活动自动收集数据库对象的统计信息。 因此,Oracle RDBMS正在按照您的建议进行操作,根据自己对工作负载的经验,动态地改变其环境,以提高性能。动态创建索引还不是目前的工作之一。顺便提一句,这是Oracle在私人七年时代暗示的,所以我认为它正在为将来的发布工作。 |
![]() |
2
1
Oracle11g是否自动索引经常用于全表扫描的字段?
|
![]() |
3
1
在MySQL问题上,您使用的存储引擎可以起到一定的作用。 Oracle将缓存表/数据行,因此不需要点击磁盘。根据操作系统和硬件的不同,mysql myisam每次都有可能从磁盘上物理读取数据。 |
![]() |
4
1
大约50k行,很大程度上取决于每行的大小,可以想象存储在1000个块以下,在50个多块读取中,可以通过全表扫描(FTS)快速读取到缓冲区缓存中。 添加适当的索引将允许表上的查询随着数据量和/或访问频率的增加而平滑地扩展。 |
![]() |
5
1
x有多少个不同的值?它们是聚集在桌子的一部分,还是均匀分布在整个桌子上? 索引不是巫毒装置:它们必须遵守物理定律。 编辑
如果该列既没有唯一约束,也没有唯一索引,优化器将根据该列选择执行路径。 能够 是该列中的重复值。这是尽可能准确地声明数据模型的价值:向优化器提供元数据。保持最新的统计数据在这方面也非常有用。 |
![]() |
6
0
在创建索引之前和之后,您应该查看查询的估计执行计划。(另外,确保统计数据在您的表中是最新的。)这将告诉您到底发生了什么,为什么性能就是它。 50K行不是一个表那么大,所以即使没有索引,如果性能还不错,我也不会感到惊讶。因此,在公式中添加索引并不能真正提高查询的执行速度。 |
![]() |
maddy · 如何根据oracle SQL中的某一列值进行排名 1 年前 |
![]() |
kiric8494 · 显示以元音开头和结尾的城市名称 2 年前 |
![]() |
Franz Biberkopf · Oracle:组合子查询和聚合函数 2 年前 |
![]() |
BitLauncher · 甲骨文-如何模拟位列和布尔和/或? 2 年前 |
![]() |
Arifullah · 如何从oracle中的列中删除特定的初始字符? 2 年前 |
![]() |
Anar · Oracle SQL用户定义函数 2 年前 |
![]() |
user1312312 · 如何为一组表编写通用触发器? 2 年前 |