索引为什么能提高查询速度?原理是什么

ORACLE800 2008-07-19 06:16:52
索引为什么能提高查询速度?原理是什么
...全文
692 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jscxh 2008-07-20
  • 打赏
  • 举报
回复
索引就是树型结构的数据,减少SQL语句对数据块的查询.
banxiankin 2008-07-20
  • 打赏
  • 举报
回复
jf
allanmorgan 2008-07-20
  • 打赏
  • 举报
回复
mark
灿烂星河 2008-07-20
  • 打赏
  • 举报
回复
给字段增加搜索标记,从而提高了检索的速度。
hjx000 2008-07-19
  • 打赏
  • 举报
回复
索引一般就是对数据进行排序、建立数据目录,这样检索就快了
oraclelogan 2008-07-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ruihuahan 的回复:]
基本原理是:通过减少 sql 语句执行时需要读取的 db_block 的数量来加速 sql 语句的执行。
[/Quote]
没有错,添加索引就是给你的列在 存储上面加上了特别的标记,然后直接去找你这个标记下的数据。就相当于 数值里面的下标吧,比方你可以直接用array[10]去取值一样(这个比喻不是很恰当!)。
wind_calm1123 2008-07-19
  • 打赏
  • 举报
回复
使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构,例如 employee 表的姓(lname)列。如果要按姓查找特定职员,与必须搜索表中的所有行相比,索引会帮助您更快地获得该信息。

索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。数据库使用索引的方式与您使用书籍中的索引的方式很相似:它搜索索引以找到特定值,然后顺指针找到包含该值的行。

在数据库关系图中,您可以在选定表的“索引/键”属性页中创建、编辑或删除每个索引类型。当保存索引所附加到的表,或保存该表所在的关系图时,索引将保存在数据库中。

注意 并非所有的数据库都以相同的方式使用索引。作为通用规则,只有当经常查询索引列中的数据时,才需要在表上创建索引。索引占用磁盘空间,并且降低添加、删除和更新行的速度。在多数情况下,索引用于数据检索的速度优势大大超过它的不足之处。但是,如果应用程序非常频繁地更新数据或磁盘空间有限,则可能需要限制索引的数量。

可以基于数据库表中的单列或多列创建索引。多列索引使您可以区分其中一列可能有相同值的行。

如果经常同时搜索两列或多列或按两列或多列排序时,索引也很有帮助。例如,如果经常在同一查询中为姓和名两列设置判据,那么在这两列上创建多列索引将很有意义。

确定索引的有效性:

检查查询的 WHERE 和 JOIN 子句。在任一子句中包括的每一列都是索引可以选择的对象。

对新索引进行试验以检查它对运行查询性能的影响。

考虑已在表上创建的索引数量。最好避免在单个表上有很多索引。

检查已在表上创建的索引的定义。最好避免包含共享列的重叠索引。

检查某列中唯一数据值的数量,并将该数量与表中的行数进行比较。比较的结果就是该列的可选择性,这有助于确定该列是否适合建立索引,如果适合,确定索引的类型。
lxzooz 2008-07-19
  • 打赏
  • 举报
回复
索引就跟字典的目录的功能类似,有了目录,查找某个字的时候就会快一些,不用第一个字开始把所有的记录都遍历一遍,直到找到结果为止。
mantisXF 2008-07-19
  • 打赏
  • 举报
回复
Google ...


FYI:

http://www.cnblogs.com/HondaHsu/archive/2008/04/30/1177006.html

ruihuahan 2008-07-19
  • 打赏
  • 举报
回复
基本原理是:通过减少 sql 语句执行时需要读取的 db_block 的数量来加速 sql 语句的执行。

17,377

社区成员

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

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