- 浏览: 916594 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (498)
- J2EE (52)
- 数据库 (17)
- java基础 (43)
- web技术 (19)
- 程序设计 (6)
- 操作系统 (18)
- IT资讯 (7)
- 我的IT生活 (12)
- 学习笔记 (9)
- Jquery (25)
- JavaScript (18)
- spring (40)
- Hibernate (12)
- Struts (10)
- YUI (2)
- Extjs (22)
- .net (0)
- Eclipse (10)
- 社会主义 (2)
- 服务器 (9)
- CSS (8)
- 网络安全 (16)
- 版本控制 (9)
- PHP (2)
- Oracle (42)
- SQL server (1)
- Mysql (11)
- 项目管理 (3)
- 开发工具使用 (10)
- SQL语句 (7)
- Perl (0)
- Shell (6)
- 漏洞 (4)
- ibatis (5)
- hacker (2)
- SQL注入 (6)
- Hacker工具 (2)
- 入侵和渗透 (7)
- 插件/组件 (2)
- 最爱开源 (5)
- 常用软件 (2)
- DOS (1)
- HTML (2)
- Android (9)
- CMS (1)
- portal (8)
- Linux (7)
- OSGI (1)
- Mina (5)
- maven (2)
- hadoop (7)
- twitter storm (2)
- sap hana (0)
- OAuth (0)
- RESTful (1)
- Nginx (4)
- flex (1)
- Dubbo (1)
- redis (1)
- springMVC (1)
- node.js (1)
- solr (2)
- Flume (1)
- MongoDB (2)
- ElasticSearch (1)
最新评论
-
M_drm:
请问要怎么设置浏览器才不报没权限呢?
用JS在页面调用本地可执行文件的方法(ACTIVEX) -
Alexniver:
官方文档。When importing data into I ...
mysql导入数据过慢 解决方法 -
camelwoo:
我记得 Criteria 可以做连接查询与子查询,也可以做分页 ...
Hibernate总结篇二 -
zhenglongfei:
楼主如果SubKeyName 这个节点不存在,怎么办??怎么用 ...
Java操作注册表 -
yxx676229549:
用log4j 2 了
logback
一般情况,在大量数据割接完以后,会发生索引实效的情况。
查询dba_indexes表,其索引状态STATUS应该为VALID,如果是DISABLE或者unusable都为不正常索引。
如果是分区索引,可用以下语句进行查询。如下:
select t.Index_Name, t.Partition_Name, t.Tablespace_Name, t.Status
from Dba_Ind_Partitions t
where t.Index_Name = 'INX_SERV_PROD_PRPTY_2'
其中'INX_SERV_PROD_PRPTY_2'是索引名。
执行返回结果如下:
1 INX_SERV_PROD_PRPTY_2 PARTITION_1 RMS_INDX USABLE
2 INX_SERV_PROD_PRPTY_2 PARTITION_10 RMS_INDX USABLE
3 INX_SERV_PROD_PRPTY_2 PARTITION_11 RMS_INDX USABLE
4 INX_SERV_PROD_PRPTY_2 PARTITION_2 RMS_INDX USABLE
5 INX_SERV_PROD_PRPTY_2 PARTITION_3 RMS_INDX USABLE
6 INX_SERV_PROD_PRPTY_2 PARTITION_4 RMS_INDX USABLE
7 INX_SERV_PROD_PRPTY_2 PARTITION_5 RMS_INDX USABLE
8 INX_SERV_PROD_PRPTY_2 PARTITION_6 RMS_INDX USABLE
9 INX_SERV_PROD_PRPTY_2 PARTITION_7 RMS_INDX USABLE
10 INX_SERV_PROD_PRPTY_2 PARTITION_8 RMS_INDX USABLE
11 INX_SERV_PROD_PRPTY_2 PARTITION_9 RMS_INDX USABLE
可以查询到每个表分区的索引是否失效。
----
[b]以下原因经常导致索引状态不正常
1) alter table move
2) alter index disable
只有函数索引可以alter index disable,一般的应该是alter index unusable
3) truncate分区表上的全局索引
4) sqlldr ( parallel or direct )append 导入了重复数据但是索引有唯一约束
5) sqlldr insert /*+ append */
建议:alter index 索引名 rebuild online;
(B-tree索引:
·索引会随着时间的增加而变的不平衡;
·删除的索引空间不会被重用;
·随着索引层数的增加,索引将会变得无效并需要重建;
·聚簇因子差,索引需要重建;
·为提高性能,索引需要经常重建;
·假如聚簇因子过大,那么重建索引可能会有好处,聚簇因子应该接近块的数量,而非行的数
)
在上线后运行一段时期时候考虑一些大表的索引进行alter index 索引名 rebuild online 在线重建
9i以上oracle就建议用DBMS_STATS 包来代替ANALYZE 语句,如果使用ANALYZE做过分析可能会产生不是很好的分析效果
以下是一般不使用索引的几个常见原因:
1) 没有查询条件,或者查询条件没有建立索引
2) 在查询条件上没有使用引导列
3) 查询的数量是大表的大部分,应该是30%以上。
4) 索引本身失效
5) 查询条件使用函数在索引列上(见12)
6) 对小表查询
7) 提示不使用索引
8) 统计数据不真实
9) CBO计算走索引花费过大的情况。其实也包含了上面的情况,这里指的是表占有的block要比索引小。
10)隐式转换导致索引失效.这一点应当引起重视.也是开发中经常会犯的错误.
由于表的字段tu_mdn定义为varchar2(20),但在查询时把该字段作为number类型以where条件传给Oracle,这样会导致索引失效.
错误的例子:select * from test where tu_mdn=13333333333;
正确的例子:select * from test where tu_mdn='13333333333';
11)对索引列进行运算导致索引失效,我所指的对索引列进行运算包括(+,-,*,/,! 等)
错误的例子:select * from test where id-1=9;
正确的例子:select * from test where id=10;
12)使用Oracle内部函数导致索引失效.对于这样情况应当创建基于函数的索引.
错误的例子:select * from test where round(id)=10; 说明,此时id的索引已经不起作用了
正确的例子:首先建立函数索引,create index test_id_fbi_idx on test(round(id));
然后 select * from test where round(id)=10; 这时函数索引起作用了
发表评论
-
经典SQL语句大全
2013-05-11 16:14 769http://www.cnblogs.com/yubinfen ... -
Oracle B-tree、位图、全文索引三大索引性能比较及优缺点汇总
2012-08-23 13:19 1389原文:http://www.itpub.net/thread- ... -
使用hint优化 Oracle SQL语句方法
2012-08-10 11:40 961在SQL语句优化过程中,我们经常会用到hint,现总结一下在S ... -
收集整理的oracle常用命令大全,解决oracle常见问题
2012-05-02 23:12 1093http://taody.iteye.com/blog/150 ... -
hql写的一个取最大值的语句
2011-11-15 00:31 1098hql写的一个取最大值的语句 http://www.itey ... -
oracle查询字符串中的数字
2011-11-14 15:25 1799-- 方法一:直接用SQL语句 select col_n ... -
oracle的分析函数over 及开窗函数
2011-09-22 15:56 422oracle的分析函数over 及开窗函数 一:分析函数ove ... -
Oracle中用户profile的用法
2011-09-07 13:46 1104可以通过使用profile文件对用户的属性进行定义,比如为pr ... -
Oracle session连接数和inactive的问题记录
2011-09-07 13:42 1804从上周起,服务器Oracle ... -
Oracle用户会话信息的查询方法
2011-09-07 13:39 1453Oracle数据库中的用户会话信息应该如何查询呢?下文对Ora ... -
oracle 用户权限、profile及角色的管理
2011-09-07 13:37 816oracle 用户权限、profile及角色的管理 ... -
oracle出现invalid username/password; logon denied错误解决方案
2011-02-18 08:51 5015出现invalid username/password; lo ... -
Oracle中如何用一条SQL快速生成10万条测试数据(转)
2011-01-20 14:30 1458做数据库开发或管理的 ... -
命令操作oracle数据库总结
2010-11-30 12:55 934--查询数据库有哪些表空间,以及表空间有多少数据文件、文件 ... -
Oracle 常用sql操作整理总结
2010-11-21 01:42 1743一、选择行 1. 简单的SELECT 语句 SELE ... -
Oracle性能优化技巧
2010-10-14 13:05 9851.选用适合的ORACLE优化器 ORACLE的优化 ... -
ORACLE 中IN和EXISTS比较
2010-08-27 09:14 945EXISTS的执行流程 select * from ... -
Oracle的SQL语法提示30例,INDEX_JOIN,ORDERED,USE_NL,LEADING
2010-08-21 23:09 1898在SQL语句优化过程中,我们经常会用到hint,现总结一下在S ... -
oracle 11g 自动内存管理
2010-08-21 23:07 2029Oracle对内存的管理的 优化从未间断,从8i到11g不断地 ... -
oracle查询语句大全
2010-08-06 14:11 1240oracle分页查询的时候,不能使用limit,所以只能这 ...
相关推荐
本篇将详细探讨10种可能导致MySQL数据库索引失效的常见场景,帮助你理解和避免这些问题。 **1. LIKE操作符的不当使用** 在查询语句中,如果使用LIKE操作符并且模式匹配出现在字符串的开头,索引可能无法被利用。...
2. 避免索引失效:使用函数、IN操作符、NOT操作符等可能导致索引失效,应尽量让索引列直接参与比较。 3. 选择正确的JOIN策略:了解不同JOIN类型的性能差异,如NLJOIN、HASH JOIN和MERGE JOIN。 五、实际应用中的...
数据库索引是数据库管理系统中用于加速数据检索的关键组件。它是一种特殊的文件,由数据库系统创建并维护,可以显著提高查询速度。索引通过对表中一列或多列的值进行排序,使得数据查找过程无需遍历整个表格。例如,...
2. 避免索引失效:避免在索引列上使用不兼容的操作,如函数、运算符或NULL值,这些会导致索引无法被使用。 3. 分区索引:对于大型表,可以采用分区技术,将数据分成多个逻辑部分,每个部分有自己的索引,提高查询...
Oracle数据库索引失效是一个常见的性能问题,它可能导致查询效率降低,影响系统的整体性能。索引失效可能是由多种原因引起的,理解这些原因并采取适当的预防措施至关重要。 首先,当WHERE子句中的条件筛选出的数据...
在MySQL数据库中,索引是提高查询效率的关键工具。它们为数据表的列提供了...了解各种索引类型、创建方法和可能导致失效的场景,可以帮助数据库管理员更好地管理和优化他们的数据库,从而提高查询效率和整体系统性能。
数据库索引是一种提高查询效率的重要手段,但是如果不正确使用索引,可能会导致索引失效,影响查询效率。以下是导致索引失效的七字口诀: 模型数空运最快嗷 1. 模:模糊查询的问题 使用like关键字进行查询的时候...
2. 避免索引失效:避免在索引列上使用非等值比较操作(如LIKE、BETWEEN)或函数,这可能导致索引无法被使用。 3. 分析和调整索引:定期进行性能分析,根据查询模式和数据分布调整索引结构和策略。 4. 使用分区和分片...
SELECT 'DBCC DBREINDEX('+TABLE_NAME+')'FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASETABLE'
### Oracle索引失效的原因及解决方法 在Oracle数据库中,索引是提高查询效率的关键工具之一。然而,在实际的应用过程中,由于多种原因可能会导致索引失效,从而影响系统的性能。本文将详细介绍Oracle索引失效的一些...
本文将重点探讨MySQL中索引失效的常见场景及其原因,并通过具体实例来帮助读者更好地理解和避免索引失效的问题。 #### 二、MySQL索引失效的原因 ##### 1. 使用了不适当的数据类型 如果列的数据类型与索引的数据...
本文将围绕为什么要进行SQL优化、如何找到慢SQL、如何分析SQL、回表与索引的概念以及什么情况下会造成索引失效等方面进行讲解。 对MySQL进行SQL优化是提高数据库性能的关键。通过找到慢SQL、分析SQL、合理使用索引,...
在面试过程中,常常会涉及到MySQL索引的相关问题,包括索引的原理、优化技巧以及索引失效的原因等。 首先,MySQL索引是一种数据结构,用于快速定位和访问数据库中的数据。它通过创建索引列和索引对象来实现,可以...
MySQL 索引失效详解 MySQL 索引是一种加快数据检索速度的数据库对象。索引可以大幅度提高查询效率,但是如果不正确使用索引,...同时,了解索引失效的原因和解决方法也非常重要,以便更好地优化查询语句和数据库性能。
在MySQL数据库中,索引是一种重要的优化手段,它能够显著...以上就是关于导致MySQL索引失效的一些常见情况及其避免方法。在实际工作中,我们需要结合具体业务场景和查询需求,合理设计和使用索引,以提高数据库性能。
导致索引失效: 1、表上频繁发生update,delete操作; 2、表上发生了alter table ..move操作(move操作导致了rowid变化)。