索引负面影响测试
2016-12-14 16:07
169 查看
什么是索引
索引是为了提供更好的查询性能,通过更少的IO查找同样的数据,索引的性能参照就是全表扫描,oracle按照执行计划在表中查找数据只有全表扫描和索引这两种方式,这两种方式没有好坏之分,只有适不适合索引负面影响
1,索引要额外占据存储空间,这个额外空间并不小SQL> create table test as select * from dba_objects; Table created. SQL> create index idx_test_name on test(object_name); Index created. SQL> select segment_name,segment_type,bytes,blocks from user_segments where segment_name in('T EST','IDX_TEST_NAME'); SEGMENT_NAME SEGMENT_TYPE BYTES BLOCKS ------------------------- ------------------ ---------- ---------- IDX_TEST_NAME INDEX 3145728 384 TEST TABLE 9437184 1152如果test是压缩表,那索引占据的空间跟表就差不多了
2,对DML操作有影响,DML操作如果涉及到索引列,在表中数据更新的同时,索引也会产生维护操作
SQL> truncate table test; Table truncated. Elapsed: 00:00:00.42 SQL> insert into test select * from dba_objects; //无索引 插入 72040 rows created. Elapsed: 00:00:00.39 Statistics ---------------------------------------------------------- 781 recursive calls 9987 db block gets 3840 consistent gets 2 physical reads 8421032 redo size 843 bytes sent via SQL*Net to client 798 bytes received via SQL*Net from client 3 SQL*Net roundtrips to/from client 2 sorts (memory) 0 sorts (disk) 72040 rows processed SQL> commit; Commit complete. Elapsed: 00:00:00.02 SQL> create index idx_test_name on test(object_name); //创建索引 Index created. Elapsed: 00:00:00.15 SQL> truncate table test; Table truncated. Elapsed: 00:00:00.46 SQL> insert into test select * from dba_objects; //有索引 插入 72041 rows created. Elapsed: 00:00:01.36 Statistics ---------------------------------------------------------- 1497 recursive calls 87825 db block gets 6116 consistent gets 5 physical reads 29216072 redo size 843 bytes sent via SQL*Net to client 798 bytes received via SQL*Net from client 3 SQL*Net roundtrips to/from client 1 sorts (memory) 0 sorts (disk) 72041 rows processed SQL> commit; Commit complete. Elapsed: 00:00:00.00这个表上只有一个索引,性能差距如此明显,如果再加一个索引,性能耗费成倍上升
使用索引不一定总是能提升查询性能,在索引的使用上不能只考虑个别查询性能上的提升,毕竟数据库性能的提升是多方面综合的结果。
相关文章推荐
- Oracle sql 调优:使用虚拟索引在生产环境测试创建索引对数据库性能的影响
- Oracle直方图的深入理解-和测试-直返图直接影响sql是否走正确的索引?
- 测试索引对数据物理存储顺序的影响
- 关于SQLite索引对写入性能影响的测试
- Oracle sql 调优:使用虚拟索引在生产环境测试创建索引对数据库性能的影响
- 创建索引有哪些缺点?有哪些负面的影响?
- 测试orcale中索引对表的查询和操作效率 影响
- 测试分区维护对于字段索引的影响(包括本地/全局索引分区与普通分区)
- 索引也会影响数据库效率
- 测试使用-批量往es索引中添加数据,es的使用小结。
- 测试使用-批量往es索引中添加数据,es的使用小结。
- Phoenix表和索引分区数对插入和查询性能的影响
- lua 表索引[]和.的使用顺序对结果的影响
- 索引对查询效率的影响
- 速度优化:只加载一个CSS满足所有要求、针对不同浏览器加载不同CSS、正式站改版测试如何不影响用户体验
- SQL Server-聚焦聚集索引对非聚集索引的影响(四)
- 前段写了一个类,类似混淆器,经过测试无误,使用后不会影响原有程序功能,附源码、开发文档等。
- Oracle隐式数据类型转换对索引的影响
- 类型转换对 MySQL 选择索引的影响
- MongoDB中建立索引对查询性能的影响(2015-11-26 22:09:02)