Oracle 索引的优化-转载
2022/5/31 2:21:37
本文主要是介绍Oracle 索引的优化-转载,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在以写为主的应用中,索引的维护需要消耗一定的 CPU 和 I/O 资源,不要创建没有必要的索引,防止冗余索引的出现。如何选择合适的字段来创建索引?
1、选择那些经常出现在 WHERE 条件中的字段
2、选择那些经常用于表连接的字段
3、选择具有高选择性的字段。当一个字段中重复数据越少时,字段的选择性就越高。
4、不要在仅有几个值(或少量值)、有大量重复数据的字段上创建 B 树索引。在这种情况下,如果数据库不是有大量的写操作或在OLTP环境下,可以考虑使用位图索引。
5、不要在经常更新的字段上创建索引。在对索引字段进行 DML 操作的时候,索引同样进行对应更新。对索引的操作也会产生额外的 undo 和 redo。
6、考虑外键上创建索引,这样的索引允许更新和删除父表时,子表不会被锁。
7、当选择创建一个索引时,考虑查询性能的提升和DML操作的延时之间,哪个成本更大,是否值得创建索引。
联合索引
相比单字段的索引,联合索引可以具有额外优点
1、提升了索引的选择性,选择性差的字段两个或多个组合到一起,可以提高联合索引的选择性。
2、减少了 I/O,如果查询中的字段均在联合索引中,则数据库直接从索引中提取数据,不需要到表中去取数据。
如何选择联合索引的字段?
选择出现在 WHERE 条件中用 AND 条件联合在一起的字段,特别是当两个或多个 AND 结合在一起的字段的选择性大于单个字段时。
如果选择联合索引中字段的顺序?
1、选择在 WHERE 条件中处于领先部分的字段,
例如,CREATE INDEX comp_ind ON table1(x, y, z);
x, xy, 和 xyz 是这个索引中的领先部分。
yz, y, 和 z 则不是。
2、把在 WHERE 条件中出现频率更高的字段放在前面
3、如果 WHERE 条件中的各字段出现频率相当,则把按照物理排序的字段放在前面。
这篇关于Oracle 索引的优化-转载的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-10Rakuten 乐天积分系统从 Cassandra 到 TiDB 的选型与实战
- 2025-01-09CMS内容管理系统是什么?如何选择适合你的平台?
- 2025-01-08CCPM如何缩短项目周期并降低风险?
- 2025-01-08Omnivore 替代品 Readeck 安装与使用教程
- 2025-01-07Cursor 收费太贵?3分钟教你接入超低价 DeepSeek-V3,代码质量逼近 Claude 3.5
- 2025-01-06PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势
- 2025-01-03用LangChain构建会检索和搜索的智能聊天机器人指南
- 2025-01-03图像文字理解,OCR、大模型还是多模态模型?PalliGema2在QLoRA技术上的微调与应用