索引的使用是很讲究的,例如:
1、要在where条件中引用
2、联合索引中,where条件一定是索引中的第一列
3、索引的类型是什么,不同的索引类型是适应不同的列类型的
4、where条件中是否用到like和null值比较,用到的话索引都是不会生效的
5、并不是说建的索引多就能提高效率,索引建立的不好,反而会降低效率
6、建立索引后还要看查询的返回值,一般索引返回值不超过全部数据的20%暂时列一些,有空再整理,大家多多补充
1、要在where条件中引用
2、联合索引中,where条件一定是索引中的第一列
3、索引的类型是什么,不同的索引类型是适应不同的列类型的
4、where条件中是否用到like和null值比较,用到的话索引都是不会生效的
5、并不是说建的索引多就能提高效率,索引建立的不好,反而会降低效率
6、建立索引后还要看查询的返回值,一般索引返回值不超过全部数据的20%暂时列一些,有空再整理,大家多多补充
解决方案 »
- 关于ODBC 连接oracle 的问题
- SET @TABLE='COMP'+@ID
- Oracle并行操作与串行操作分别什么意思啊
- toad导出时报错,非常怪,我是oracle 10g
- 怎样在SQLPLUS里执行这个包?
- 数库的时间是"01-一月 -2030 12:00:00 AM"如何把满足这个时间的数据查询出来.
- 数据库的基础问题
- 那位大侠告诉小弟SQLCXT函数的意义及参数内容
- asp调用oracle包里函数--------是一个返回记录集的问题,急!!!penitent兄你一定要帮我解决啊,同tinger (影虎)问题好相以,也是好多人得
- 在oracle存储过程中,如何定义可变数组?
- 在red hat linux9.0下运行oracle91的sql plus出错!
- group by问题,在sqlplus中执行没问题,在SP(存储过程)中失败。
请得很全面
1、要在where条件中引用
2、联合索引中,where条件一定是索引中的第一列
>>联合索引是否就是指多个字段构成同一个索引,例如复合主键?
“where条件一定是索引中的第一列”的意思是?
3、索引的类型是什么,不同的索引类型是适应不同的列类型的
>>请问,索引类型有那些?
4、where条件中是否用到like和null值比较,用到的话索引都是不会生效的
>>您的意思是,如果写了 xxx.column like "a%", if column has null value, 查询将不会使用到索引文件,而导致速度很慢,是这样吗?5、并不是说建的索引多就能提高效率,索引建立的不好,反而会降低效率
>>请问,你指的降低效率是指降低Insert,update的效率,还是指降低查询的效率?6、建立索引后还要看查询的返回值,一般索引返回值不超过全部数据的20%
>>“一般索引返回值不超过全部数据的20%”——不是很理解这个意思。
还有,请问如何看查询返回值?
还有,就是存在这样的可以打开,关闭索引功能的系统函数吗?
这里有一篇相关的文章: <a href="
http://www.vchelp.net/cndevforum/subject_view.asp?subject_id=55663&forum_id=72">click</a>
建议看看http://www.itpub.net/showthread.php?threadid=219586&pagenumber=说的这本书
1索引列无函数转换
2like查询第一个字符不能为通配符
3is null或者is not null 不能使用索引
4使用index或者no_index 提示
select * from tablename where id+0=1
where user_name||''= 'smith'
where to_number(字段)=4
where user_name like '%D'
where user_name like 'D%'
where user_name like '%D%'
where user_name like 'D%D'
where to_char(字段)='k'
where nvl(字段,'0')='3'
where to_date(字段)
......
--以上排除建了函数索引的情况,如果想用索引则建立函数索引.
explain plan set statement_id='标识' for select ....
然后
select * from plan_table a where a.statement_id='标识'
就可以看一个语句的执行计划.包括是否使用了索引等.