外键上索引作用的一个实际测试
来源:互联网 发布:java dos 运行命令 编辑:程序博客网 时间:2024/06/04 19:55
今天又看了下上次给部分表的外键加上索引后的效果,发现仍旧有一些sql查询速度比较慢,查看执行plan,发现也没用到子表外键上的索引,而且主表也没有索引,完全就是2个表的full access。
于是坐下来测试了一下这个sql,测试的主表大概有将近100万数据,子表大概几百万数据,sql查询子表的结果有6600条记录。
1、主表和子表完全没有索引,出第一条结果3秒多点
2、主表加上索引,子表仍旧full access,出第一条结果1.7秒。
3、主表加上索引,子表用/*+ INDEX(t index) */强制使用外键上的索引,出第一条结果0.3秒。
仔细看了执行计划,发现区别在于情况2的两表连查用得是hash join,cost也就10000多,但是情况3的时候,虽然子表使用索引基本上没有cost,但两表联查用的是nested loop,Oracle估算的cost高达34000,从效果看,这个外键索引还是应该用的,感觉oracle高估了hashjoin的性能,也可能是服务器机器太烂吧(2006年左右的P590),
改程序的sql太麻烦了,好多地方,只能在主表上加好索引,能快一点是一点了,禁用hashjoin涉及整个数据库所有sql,这种事也不能干,只能先就这样了。
0 0
- 外键上索引作用的一个实际测试
- UIViewControllerBasedStatusBarAppearance作用的实际测试
- DECLARE_DYNCREATE 和 IMPLEMENT_DYNAMIC 的一个实际作用
- 位图索引的一个小测试
- GetClientRect的实际测试结果
- 数据库索引的作用
- 数据库索引的作用
- 数据库索引的作用
- 数据库索引的作用
- 数据库索引的作用
- 数据库索引的作用
- 数据库索引的作用
- SQL索引的作用
- 索引的作用
- 数据库索引的作用
- MySQL索引的作用
- 索引的作用
- mysql索引的作用
- qq主界面实现(二)-tabHost与fragment配合使用
- Codeforces 350B Resort
- Android LayoutInflater详解
- java23种经典设计模式UML类图汇总
- SqlServer索引的原理与应用
- 外键上索引作用的一个实际测试
- SELinux 基础
- 如何在sdk下使用.9.png图片
- MappingException: Unknown entity解决方案
- 理解Android中dpi和分辨率的关系,谈谈Android做成适应全部手机的UI方式
- 设计模式六大原则
- ios- 音乐播放器(1)
- Maven的pom.xml配置文件详解
- ASP.Net TextBox只读时不能通过后台赋值取值