seman198102 2009-09-19 08:51
浏览 294
已采纳

想了解SQL查询(全表查询,索引查询,包含字表情况)的执行步骤

之前看到这篇文章T-SQL查询的逻辑工作原理,介绍select查询的执行步骤,但是我认为全表查询是对的,如果是索引查询,应该不是这样的,请问索引查询还有子查询的sql的执行顺序是怎么样的?如果还有其他情况的话,请麻烦一并介绍下,谢谢!

 


问题补充:
请看一下我给出的文章,我的问题来自该文章,谢谢
  • 写回答

1条回答 默认 最新

  • CTIGERS 2009-09-25 10:41
    关注

    索引查询实际上就是要讨论索引的工作原理,排除特殊索引(比如bitmap),只说普通索引的话,用的都是"树"型结构,在主流数据库中SQL Server和MY SQL中用B+TREE,而ORACLE,INFORMIX,SYBASE用B-tree,DB2则用的是经过改造的B-tree结构..也就是说,这些就是普通索引的查询顺序...
    以二叉树为例(注意,B+和B-都不是二叉的,只是用二叉树解释起来比较简单),假设你为一个表中叫id的字段创建索引,这个表一开始是个空表,那么索引也是空的,当你插入一条数据的时候,id字段对应的值以及指向这个id值所对应的行的指针(rowid)会同时存入一个树的节点中,第一次插入的当然就是根节点了.每一个节点就相当于一个索引页,也就是占了磁盘中的一块空间,
    当你再插入一行数据,就会从跟节点延伸出子节点来存放新id和对应的指针,如果新id大于父节点中的id则被分到右边,就是右子树,小于则分到左边,就是左子树.之后同理..
    当你通过索引进行查询时,系统会先根据where条件中的id范围,从根节点开始向下搜索,如果是B-tree结构的索引,那么找到所有包含所需要的ID的节点就停止了,如果是B+tree,便会一直找到叶子节点为止...

    至于子查询,跟没有子查询的SQL是一样的,只是涵有子查询的SQL会先执行子查询再执行外层的查询.如果有索引,那么都有可能会被索引影响适应索引查询

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 软件供应链安全是跟可靠性有关还是跟安全性有关?
  • ¥15 电脑蓝屏logfilessrtsrttrail问题
  • ¥20 关于wordpress建站遇到的问题!(语言-php)(相关搜索:云服务器)
  • ¥15 【求职】怎么找到一个周围人素质都很高不会欺负他人,并且未来月薪能够达到一万以上(技术岗)的工作?希望可以收到写有具体,可靠,已经实践过了的路径的回答?
  • ¥15 Java+vue部署版本反编译
  • ¥100 对反编译和ai熟悉的开发者。
  • ¥15 带序列特征的多输出预测模型
  • ¥15 Python 如何安装 distutils模块
  • ¥15 关于#网络#的问题:网络是从楼上引一根网线下来,接了2台傻瓜交换机,也更换了ip还是不行
  • ¥15 资源泄露软件闪退怎么解决?