首页   |   IT资讯   |   综合资讯   |   开发   |   软件   |   问答   |   网络技术   |   网络综合
更多:
当前位置:首页 » 手机数码
文章正文

请帮忙解释一下这个sql语句

类型:转载   责任编辑:asp   日期:2007/03/01

    

----     例:表card有7896行,在card_no上有一个非聚集索引,表account有191122行,在     account_no上有一个非聚集索引,试看在不同的表连接条件下,两个sql的执行情况:          
     
  select     sum(a.amount)     from     account     a,      
  card     b     where     a.card_no     =     b.card_no(20秒)      
  ----     将sql改为:          
  select     sum(a.amount)     from     account     a,      
  card     b     where     a.card_no     =     b.card_no     and     a.      
  account_no=b.account_no(<     1秒)      
  ----     分析:          
  ----     在第一个连接条件下,最佳查询方案是将account作外层表,card作内层表,利用card上的索引,其i/o次数可由以下公式估算为:          
     
  ----     外层表account上的22541页+(外层表account的191122行*内层表card上对应外层表第一行所要查找的3页)=595907次i/o          
     
  ----     在第二个连接条件下,最佳查询方案是将card作外层表,account作内层表,利用account上的索引,其i/o次数可由以下公式估算为:          
     
  ----     外层表card上的1944页+(外层表card的7896行*内层表account上对应外层表每一行所要查找的4页  
   
  以上的例子中说第2条sql是少于1秒,而第一条要花上20秒,  
  我想问高手几个问题:  
  1。就什么叫外层表,内层表?  
  2。什么是聚集索引,非聚集索引?  
  3。能不能详细解释一下,这个2条sql产生性能差别这么大的原因,我看就只是where条件不一样而已嘛,看不大出什么奥妙,清高手显身给个准确的说法,谢谢

推荐阅读

  • 我是GOOGLE的FANS [详细内容]
  • QQ.COM迎奥运举办全民健身登山大赛 [详细内容]
  • 升级a55为2128的新方法 [详细内容]
  • 进口国产齐降价 本月MP3降价机型大汇总 [详细内容]
  • COM+ 管理:了解组件服务管理工具 [详细内容]
  • N8000中纸牌游戏的必胜秘诀 [详细内容]
  • 用销量说话 五款10月份最热卖的笔记本 [详细内容]
  • 网友回答:
    网友:lastdrop

    1.外层、内层就象嵌套循环的外层循环和内层循环一样。  
       
      2.聚集索引是在聚集上建立的,一般的索引都是非聚集索引,查查书就可以了解了。  
       
      3.其实分析已经写得很清楚了card表的记录远远小于account表,再多加了个条件,速度当然大大提高。你只要理解了1,这些就清楚了。  
     

    网友:suleen

    聚集索引是对建立索引的字段在物理上的排列是有序的,这种索引对于一定范围内的查询很有效,因为它只需要找到第一条,然后依次向下取数据就可以了,直到条件不满足。

    .
    站内导航:
    IT热门资讯:
      最佳浏览:1024X768 MSIE
    ©2007 jqmk.com.cn All Rights Reserved