- 浏览: 897860 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 718http://www.cnblogs.com/yubinfen ... -
Oracle B-tree、位图、全文索引三大索引性能比较及优缺点汇总
2012-08-23 13:19 1346原文:http://www.itpub.net/thread- ... -
使用hint优化 Oracle SQL语句方法
2012-08-10 11:40 927在SQL语句优化过程中,我们经常会用到hint,现总结一下在S ... -
收集整理的oracle常用命令大全,解决oracle常见问题
2012-05-02 23:12 1059http://taody.iteye.com/blog/150 ... -
hql写的一个取最大值的语句
2011-11-15 00:31 1056hql写的一个取最大值的语句 http://www.itey ... -
oracle查询字符串中的数字
2011-11-14 15:25 1732-- 方法一:直接用SQL语句 select col_n ... -
oracle的分析函数over 及开窗函数
2011-09-22 15:56 404oracle的分析函数over 及开窗函数 一:分析函数ove ... -
Oracle中用户profile的用法
2011-09-07 13:46 1073可以通过使用profile文件对用户的属性进行定义,比如为pr ... -
Oracle session连接数和inactive的问题记录
2011-09-07 13:42 1753从上周起,服务器Oracle ... -
Oracle用户会话信息的查询方法
2011-09-07 13:39 1388Oracle数据库中的用户会话信息应该如何查询呢?下文对Ora ... -
oracle 用户权限、profile及角色的管理
2011-09-07 13:37 776oracle 用户权限、profile及角色的管理 ... -
oracle出现invalid username/password; logon denied错误解决方案
2011-02-18 08:51 4931出现invalid username/password; lo ... -
Oracle中如何用一条SQL快速生成10万条测试数据(转)
2011-01-20 14:30 1427做数据库开发或管理的 ... -
命令操作oracle数据库总结
2010-11-30 12:55 905--查询数据库有哪些表空间,以及表空间有多少数据文件、文件 ... -
Oracle 常用sql操作整理总结
2010-11-21 01:42 1669一、选择行 1. 简单的SELECT 语句 SELE ... -
Oracle性能优化技巧
2010-10-14 13:05 9551.选用适合的ORACLE优化器 ORACLE的优化 ... -
ORACLE 中IN和EXISTS比较
2010-08-27 09:14 900EXISTS的执行流程 select * from ... -
Oracle的SQL语法提示30例,INDEX_JOIN,ORDERED,USE_NL,LEADING
2010-08-21 23:09 1847在SQL语句优化过程中,我们经常会用到hint,现总结一下在S ... -
oracle 11g 自动内存管理
2010-08-21 23:07 1984Oracle对内存的管理的 优化从未间断,从8i到11g不断地 ... -
oracle查询语句大全
2010-08-06 14:11 1211oracle分页查询的时候,不能使用limit,所以只能这 ...
相关推荐
MySQL数据库索引失效的10种场景.zip
二、索引失效的几种情况 1.如果条件中有多个字段使用or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因)。多条件查询用同一字段时使用or索引会生效。 注意:要想使用or,又想让索引生效,只能...
在关系数据库中,索引是一种单独对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的...在MySQL数据库一共支持5种类型的索引和9种索引失效的场景,下面,我来进行一一介绍。
主要介绍了oracle数据库索引失效的原因及如何避免索引失效,有需要的小伙伴参考下。
SELECT 'DBCC DBREINDEX('+TABLE_NAME+')'FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASETABLE'
主要给大家介绍了关于MySQL中有哪些情况下数据库索引会失效的相关资料,文中通过图文介绍的非常详细,对大家学习或者使用mysql具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
导致索引失效的口诀
在面试过程中,常常会涉及到MySQL索引的相关问题,包括索引的原理、优化技巧以及索引失效的原因等。 首先,MySQL索引是一种数据结构,用于快速定位和访问数据库中的数据。它通过创建索引列和索引对象来实现,可以...
导致索引失效: 1、表上频繁发生update,delete操作; 2、表上发生了alter table ..move操作(move操作导致了rowid变化)。
比如,如果索引列是"timestamp"类型,但查询条件中使用了函数对该列进行了处理,索引可能失效。 表达式和函数的使用:当查询中使用了大量表达式或函数来处理列时,MySQL可能无法使用索引。这是因为MySQL只能在索引...
主要给大家介绍了关于导致MySQL索引失效的一些常见写法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
mysql 索引失效详解
包含mysql简介、索引介绍、索引引用策略、索引失效场景等
如何字段类型是字符串,where时一定用引号括起来,否则索引失效 like通配符可能导致索引失效。 联合索引,查询时的条件列不是联合索引中的第一个列,索引失效。 在索引列上使用mysql的内置函数,索引失效。 对索引列...
2 索引失效 2.1like后面的通配符在前面,索引会失效。 2.2 没有使用联合索引的第一列,not in,!=,使用MySQL函数,类型转换,or等都无法用到索引。 3 SQL和索引的优化 3.1 慢查询日志 3.2 查磁盘的I/O读写的数据量 ...
mongodb 数据库添加TTL 索引,自动清理数据库,设置数据失效时间
索引需要占用物理空间,除了数据表占用数据空间之外,每一个索引还要占用一定的物理空间,如果建立聚簇索引,那么需要的空间就会更大。当对表中的数据进行增加、删除和修改
索引失效的情况: 数据库优化 查询计划的结果中看哪些关键数据; mysql 如何调优; 索引是建的越多越好吗; 在表查询中,一律不要使用 * 作为查询的字段列表,原因是什么; 描述一下InnoDB和MyISAM的区别; 当前读...