oracle 索引

wxl1990721 2011-09-18 10:53:34
问大家一个问题哈,为某一张表的某一列建立一个索引,是不是查询的时候就先按照这一列的数据排序,然后再按照表的其他列从前向后查询啊????????
...全文
141 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxl1990721 2011-09-20
  • 打赏
  • 举报
回复
有没有说得清楚一点的?????????


wxl1990721 2011-09-18
  • 打赏
  • 举报
回复
比如我有一张表,student,有a,b,c,d,e,f这么几列
对b建立索引:create index aindex on student(b);
那么当我用select * from student的时候,内部是怎样处理的?


事实上我也不知道怎么表达,我只知道这个可以用目录来比喻,可是具体是怎样运行的,我还是不明白,对某一个列建立索引,那么我查询的时候是怎样提高速度的?是怎样缩小范围的?
Huntrees 2011-09-18
  • 打赏
  • 举报
回复
索引是什么?索引就相当于一本书的目录啊,目录是干什么的?目录是缩小查找范围啊。


没有索引的时候,你查一条记录怎么查?从头查到尾。

有了索引的话,直接定位到一个比较小的范围,再查找啊。所以效率会提高

简单的说,就是 索引文件会给字段的每一个不同值分门别类,就好像字典的目录一样,首字母A的在哪,首字母B的在哪

索引文件中的是有顺序的
scrack 2011-09-18
  • 打赏
  • 举报
回复
索引 不使用查询这个字段 并不能看出效果,但是使用这个字段的时候又很多情况并不走索引的比如like %...%
xyz0079110 2011-09-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wxl1990721 的回复:]
比如我有一张表,student,有a,b,c,d,e,f这么几列
对b建立索引:create index aindex on student(b);
那么当我用select * from student的时候,内部是怎样处理的?


事实上我也不知道怎么表达,我只知道这个可以用目录来比喻,可是具体是怎样运行的,我还是不明白,对某一个列建立索引,那么我查询的时候是怎样提高速度的?是怎样缩小……
[/Quote]

在你加条件的时候 where b=condition 这样才用到索引,可以加快查询的速度~
yjytiantang 2011-09-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wxl1990721 的回复:]
比如我有一张表,student,有a,b,c,d,e,f这么几列
对b建立索引:create index aindex on student(b);
那么当我用select * from student的时候,内部是怎样处理的?


事实上我也不知道怎么表达,我只知道这个可以用目录来比喻,可是具体是怎样运行的,我还是不明白,对某一个列建立索引,那么我查询的时候是怎样提高速度的?是怎样缩小……
[/Quote]即使建立了索引,查询时也不一定会用到。 oracle优化器会自己选择最合适的查询方式。具体查询运行你可以看执行计划~

1,617

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧