手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

Oracle 索引 index 浅释

[日期:2018-01-21] 来源:Linux社区  作者:walkwithmonth [字体: ]

索引是一个模式对象,其中包含每个值的条目,该条目出现在表或集群的索引列中,并提供对行的直接快速访问。

创建一个索引:  create index 索引名 on 表名 (字段名);

删除索引:  drop index 索引名

建立索引的目的就是为了加快查询速度,建立索引后会使DML操作效率慢,但是对用户查询会提高效率。删除一个表时,相对应的索引也会删除。另外,索引是会进行排序。

创建索引就是为了减少物理读,索引会减少扫描的时间。在经常要用到where的子句的字段,应该使用索引,另外还要看所查询的数据与全部数据的百分比,表越大,查询的记录越少,索引的效率就越高.;

举例:

CREATE INDEX upper_ix ON employees (UPPER(last_name));

使用:

SELECT first_name, last_name  FROM employees WHERE UPPER(last_name) IS NOT NULL  ORDER BY UPPER(last_name);

为了增加Oracle数据库使用索引而不是执行全表扫描的可能性,请确保函数在后续查询中返回的值不为空。如果没有WHERE子句,Oracle数据库可能会执行全表扫描。

注意事项:

WHERE之后的字段条件,需与索引一致,否则可能失效。

如: CREATE INDEX ix_birth  mployees (birthday);

查询语句:  select  birthday  from  mployees  where to_char(birthday,'YYYY-MM')='2018-01';

结果:索引没有效果

更多Oracle相关信息见Oracle 专题页面 http://www.chineselinuxuniversity.net/topicnews.aspx?tid=12

本文永久更新链接地址http://www.chineselinuxuniversity.net/Linux/2018-01/150469.htm

linux
本文评论   查看全部评论 (1)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
第 1 楼
* buged会员 发表于 2018/1/22 9:03:04
后台学习中。