`
文章列表
给定值的比较次数等于给定值节点在二叉排序树中的层数。如果二叉排序树是平衡的,则n个节点的二叉排序树的高度为Log2n+1,其查找效率为O(Log2n),近似于折半查找。如果二叉排序树完全不平衡,则其深度可达到n,查找效率为O(n),退化为顺序查找。一般的,二叉排序树的查找性能在O(Log2n)到O(n)之间。因此,为了获得较好的查找性能,就要构造一棵平衡的二叉排序树。 ---------------------  作者:谢小天1990  来源:CSDN  原文:https://blog.csdn.net/xieyutian1990/article/details/38435619  ...
演变过程: 二叉树----》二叉搜索树----->AVL树-----》(多路搜索树)B树------》B+树   ~~~~~~~~~~~~~~~~~~~~~~~   B树就是查找,是值的树,索引是查找值,在B树里找到值后,返回rowid即记录。 rowid是伪列 记录的位置 一个索引一个B树 聚集索引是主键的 只有一个 非聚集索引普通随便 上限可能是200多   B树是多路搜索树,为了压缩高度,二叉改为多叉,节点含有更多的关键字 平衡了查找更快 O(lg N) =高度 或 减1 最坏情况 O(N)      ~~~~~~~~~~~~~~~~~~~~~~~ ...
 https://blog.csdn.net/huiguixian/article/details/6360682
   https://www.jianshu.com/p/3e1adaf3024d
https://blog.csdn.net/weixin_30531261/article/details/79312676
http://www.itpub.net/thread-1626760-1-1.html  https://www.cnblogs.com/xqzt/p/4449184.html  索引是一个"表",它有两个"字段",一个是索引列,一个是rowid,整个索引以索引列排序,索引列相同的话,再以rowid排序。

驱动表的概念

http://www.itpub.net/thread-144375-1-1.html 驱动表是在使用多表嵌套连接时,会先全表扫描该驱动表,然后驱动表返回的结果集中一行一行去匹配被驱动表(可以利用索引),所以我们会选择小表做为驱动表,而被驱动使用索引进行连接。对于基于规则的优化系统,驱动表在FROM后是有次序设置的(最右边的是驱动表),而在基于成本的优化,ORACLE会选择最合适的驱动表。     The 'driving' table is the table we will join FROM -- that is JOIN TO other tables.  For ...

连接 理解

    博客分类:
  • sql
 left join 就是关联,右表多出来不相干 关联不上不要,右边少了以空代替,保证左表全出来,如果右边重复记录,则左表关联上部分也重复。总结就是,左表只会多(重复、因右表重复)不会少,右表关联不上则为空。      1       1          1 2       2 a.id=b.id   左边和右边两个都等,左边就会重复一条记录出来 ~~~~~~~~~ 内连接取交集 左外连接 取左表全部 ,若没有关联上右表为空,内在正常关联。(先关联,若没关联上,则右表用空记录,左表全出来) 1     3 2     4 3     5 得到 1   空 ...
https://blog.csdn.net/cuiyan1982/article/details/78595146  
REFS:http://www.talkwithtrend.com/Article/178469 http://www.itpub.net/forum.php?mod=viewthread&tid=2056849&extra=&highlight=&page=1 https://www.cnblogs.com/zhaoyl/archive/2012/05/04/2483513.html  

组合索引的优势

    博客分类:
  • sql
11  那么,如果在firstname、lastname、age这三个列上分别创建单列索引,效果是否和创建一个firstname、lastname、age的多列索引一样呢?   答案是否定的,两者完全不同。当我们执行查询的时候,MySQL只能使用一个索引。如果你有三个单列的索引,MySQL会试图选择一个限制最严格的索引。但是,即使是限制最严格的单列索引,它的限制能力也肯定远远低于firstname、lastname、age这三个列上的多列索引。   多列索引还有另外一个优点,它通过称为最左前缀(Leftmost Prefixing)的概念体现出来。继续考虑前面的例子,现在我们有一个fi ...
  11  我们知道索引列如果出现null值会导致索引失效。具体情况如下:     表中数据如下: 可见storeid列有null值。   当执行查询语句:select * from demo  where storeid= '10';时我们通过plsql的sql分析(F5触发)可以看到触发全表查询。   那该如何让该在字段有空值的情况下触发索引呢?   有两种方法:   1、建立函数索引 create index xxx on 表名(列名,1)    ----相当于给默认值1   2、建立函数索引create index xxx on 表名( decode(列名 ...
111 回表:在数据中,当查询数据的时候,在索引中查找索引后,获得该行的rowid,根据rowid再查询表中数据,就是回表。       --创建一个表, 索引只建立在object_id上   SQL> create table ml_1 as   2  select * from dba_objects   3  ...
select sql_text,spid,v$session.program,process from v$sqlarea,v$session,v$process where v$sqlarea.address=v$session.sql_address and v$sqlarea.hash_value=v$session.sql_hash_value and v$session.paddr=v$process.addr and v$process.spid in (26377,26379,26383,26385,2638 ...
  111
Global site tag (gtag.js) - Google Analytics