From 3e60cdc3c0beb896f50cf0630b4283aebf60e877 Mon Sep 17 00:00:00 2001 From: drh Date: Tue, 30 Aug 2005 22:44:05 +0000 Subject: [PATCH] Initial work on documentation describing the optimizer. (CVS 2645) FossilOrigin-Name: 5cebd7ba3ccbdd0f4c8fe77091992f52d3a4b24c --- manifest | 16 ++- manifest.uuid | 2 +- www/direct1b.gif | Bin 0 -> 11439 bytes www/fullscanb.gif | Bin 0 -> 11946 bytes www/index-ex1-x-b.gif | Bin 0 -> 23173 bytes www/indirect1b1.gif | Bin 0 -> 18098 bytes www/optimizer.tcl | 265 ++++++++++++++++++++++++++++++++++++++++++ www/table-ex1b2.gif | Bin 0 -> 10888 bytes 8 files changed, 277 insertions(+), 6 deletions(-) create mode 100644 www/direct1b.gif create mode 100644 www/fullscanb.gif create mode 100644 www/index-ex1-x-b.gif create mode 100644 www/indirect1b1.gif create mode 100644 www/optimizer.tcl create mode 100644 www/table-ex1b2.gif diff --git a/manifest b/manifest index b0741800c8..d6e64990e7 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C The\sCSV\soutput\smode\sdoes\snot\ssign-extend\sbytes\swhere\sthe\shigh-order\sbit\sis\sset.\nTicket\s#1397.\s(CVS\s2644) -D 2005-08-30T20:12:02 +C Initial\swork\son\sdocumentation\sdescribing\sthe\soptimizer.\s(CVS\s2645) +D 2005-08-30T22:44:06 F Makefile.in 12784cdce5ffc8dfb707300c34e4f1eb3b8a14f1 F Makefile.linux-gcc 06be33b2a9ad4f005a5f42b22c4a19dab3cbb5c7 F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028 @@ -275,13 +275,17 @@ F www/copyright.tcl 82c9670c7ddb0311912ab7fe24703f33c531066c F www/datatype3.tcl 1d14f70ab73075556b95e76a5c13e5b03f7f6c47 F www/datatypes.tcl 7c786d2e8ff434346764534ec015966d17efce60 F www/different.tcl d01064946c588db0a0e87563a30aef1b3efb4434 +F www/direct1b.gif 32b48b764244817b6b591898dc52a04299a7b8a7 F www/docs.tcl 6c0b2c567404b15bd46a0cda2dc69615a8e679a8 F www/download.tcl ceaa742d5b8137bce31e9dcc4e44494b38211490 F www/dynload.tcl 02eb8273aa78cfa9070dd4501dca937fb22b466c F www/faq.tcl 49f31a703f74c71ce66da646aaf18b07a5042672 F www/fileformat.tcl 900c95b9633abc3dcfc384d9ddd8eb4876793059 F www/formatchng.tcl 053ddb73646701353a5b1c9ca6274d5900739b45 +F www/fullscanb.gif f7c94cb227f060511f8909e10f570157263e9a25 +F www/index-ex1-x-b.gif f9b1d85c3fa2435cf38b15970c7e3aa1edae23a3 F www/index.tcl 853525c11fb519dac801bcbbe0488c447e526e7b +F www/indirect1b1.gif adfca361d2df59e34f9c5cac52a670c2bfc303a1 F www/lang.tcl 422b21b899f6d84dd3fdd2d4b204061b6912efd2 F www/lockingv3.tcl f59b19d6c8920a931f096699d6faaf61c05db55f F www/mingw.tcl d96b451568c5d28545fefe0c80bee3431c73f69c @@ -289,17 +293,19 @@ F www/nulls.tcl ec35193f92485b87b90a994a01d0171b58823fcf F www/oldnews.tcl 1a808d86882621557774bf7741ed81c7f4ef9f19 F www/omitted.tcl f1e57977299c3ed54fbae55e4b5ea6a64de39e19 F www/opcode.tcl 5bd68059416b223515a680d410a9f7cb6736485f +F www/optimizer.tcl d6812a10269bd0d7c488987aac0ad5036cace9dc F www/optimizing.tcl f0b2538988d1bbad16cbfe63ec6e8f48c9eb04e5 F www/pragma.tcl 44f7b665ca598ad24724f35991653638a36a6e3f F www/quickstart.tcl 6f6f694b6139be2d967b1492eb9a6bdf7058aa60 F www/speed.tcl 656ed5be8cc9d536353e1a96927b925634a62933 F www/sqlite.tcl b51fd15f0531a54874de785a9efba323eecd5975 F www/support.tcl 3955da0fd82be68cc5c83d347c05095e80967051 +F www/table-ex1b2.gif a588d21a2d88bb2a2ef0431fcc5ed5aa48c0bbc5 F www/tclsqlite.tcl 3df553505b6efcad08f91e9b975deb2e6c9bb955 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0 F www/version3.tcl a99cf5f6d8bd4d5537584a2b342f0fb9fa601d8b F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513 -P 0f7a53f78d9dd5c426be834f2d50a6fe4e860141 -R f1bc0e4a2c4ceb3e245064f15c4dbe8a +P 528df777e5d76077d8766f04ee222fd64d9373a6 +R 8ad712df9db8cfcf34688500c6dc35e9 U drh -Z 6881c22eb7e94b960094ada2d2c618e3 +Z 9fa61a38e2d65d933c87842c6fb4f4c0 diff --git a/manifest.uuid b/manifest.uuid index 3db40eed28..9ea1cb1a63 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -528df777e5d76077d8766f04ee222fd64d9373a6 \ No newline at end of file +5cebd7ba3ccbdd0f4c8fe77091992f52d3a4b24c \ No newline at end of file diff --git a/www/direct1b.gif b/www/direct1b.gif new file mode 100644 index 0000000000000000000000000000000000000000..8999a84e5c4c43c98ec6c260dbe44235ccf9eded GIT binary patch literal 11439 zcmchd_dnH-`~RP3I>$Wrjxr)6B97UyB3pK-V`LsHBO=bhF~c!3q9QV)vdPMJgv^Yx zviB~Mj?e4;{Ug4QAFf}o>vr9)b-Uj#?K`*83id4^7SPEQ@Sot+a5w^q1OOxrH7x^* zhM9(egMp5biHU`UiJgOymywl=hl`7g;}SpX6;_U`9GqgDywbefR|GE!iAVr|prGJo zQStvIBq_~*lV3nd;HtE&h>V<=oT7w+vaGDEii*k&RrRZwtD+jBlKPTTMpDvurRDC) zq3zI0j!L&&Z^^1@$!Y4KwR9El7^oWDb+K2{(9ke2FfcSWR5P*EG{0y1pKMKSZEbb! z9My1Yw*zkLJl4?-(KUB4w{o_!cDJ_kvwINqzyRxP;*2x*cx2`2f6wQ!&7&tl7B-HK zjvgK!*e6(jfB&$sFo%#x1A>7G(Znpl%#vhjon~$K!pg@L34OflxZt(Uk^z|?E53C6EZT1bW3l3=t3FruT(*5MgmnUJvVb1ticVePv zT#C=L48P>8fYh9zjJzk=Z^B-cyaa%1DVf;7zzjFH3PZzD0GMZ`-2s3NHZ}?XP>{$! z45(k+y#JV(jxOVKkhqYQT~|^2ZtpVfvxd_AEMq?#J#Ic_|TYG z*<4UiP+ngC`CVZYpJrlzKp+V-@DuFRIctky5}Eq$LFd+@#Zh=B;gIDt4r zjGK##Uy4uKOd{=)a@xPX>KV)Hn{vtj7;^oVW{QQgB+K!Hnfq{Xsv9Xz%nTx)@i_y`G+1aI~rLC>4i>NjdXG%GK$-PruG?;_-+nnjEE*^S~iKOP$ zttlBP&`G;y_ob$Etk}3f_oZ&Fd;e8{NwLqpwrujFNwKtEENl66wQEj>L4V!*A8}SM z`}ln{u+^WSPO{ZBSn)aoAQzDf$FtPcg0l&zVGOfFAsdEPABGvT212O5kk0G;w947! zq`9}AVPZ{-)e%0zq&8-PJi=!civMo^VM_P4;Vd9O>I{XNdhkO$BZVNZK~u}0K53Tc zBIaDN26?s6fXYF{WvTXwO$9VX;MINJ9|7|^pw}-_+I~;#L*G3JVVeK+G{$Q7@sOI7 zHkj}NflZVF^flTJubylVY4d<6T*hOd zMQ@Ps@6!3XL>oF54mIf;H>m;fs^^dd`KsSPli|cHObl4!;K5_Vfi|d|*y!pd2Mtw@ ze3LOjK>Z<3dMuN62DGt)xt!|48wi;N)WHZjNSiZuQMf1=sc$__OK0rp;OuIT0s|vY z|2&NSim1qOSEax(p0k4@#)+Sh@mz=&iML3g6zfNa;7EVW=81IOTuZ*};KvRM{u!6} zDA(Q(^4627kOM@ab7FEg0h5BRfiz!e(E)m4n_C~h{z7b5biG;`5TzS1-mV(BD-@YG zCM&j6Gj8FrQ#<8cwo^9~xV2Ni5H0q>@+-+<_tSb&*>2-@-PUf?eoz0du%YXfy_VC} zGVj)7ud2Pz09CGc{*pt$dOPB3`F;nj{Pun)N?ZJ(i^URm(9Pjee$c~{jP}Z5Zs0#8 z3ufXD`$US%55I`l;|`$!hj9c_XdHJmcysL8(SXuXbM;q+CEA)Hc?K2#VL3hn*-<$S zl;6;ulk($H6HCvV-}J;hkB7AU?5fA=*l6*L9qFFGr(KKR|Nf4v-}(K+r`Qt;aL+iL z%m)65IHAlw*?X!t9|GBZyb!r0ak>!m_a*wL@~|g*ktBA%VL9!>?$gTi>lF07%J^9& z#wvyPWW6xcOL4=`JMYg*dHwF$Rt3Xc&}`+T*WaCn`O(PU*D+yddu>#=o@{<%_dY*( zyl1F%I3T}ww);3VEN8vL(z|89OX=gk-(g}y|4wF3q%gvxf5ZO$S!dWopKc3y_iyj? zdY|tar{4-ZJ6-!2`1|nWfzmmJW??H(yLE2XC>$}scL620^#y+`^hkL1{u^pjtKQ#g49S+t zW|9>mv~rKGlf2FHQ8a&44hY6Lm+ky3oEzkwPmD=d1qFq~kodFgl$4w-+;xPcC0wi^6z$S*r1K@ptr392dkh6SX1^`UJS2iI4pvL7#XYqbu zgCp9wa3fM;uF3dVv&H;)0K&mSpl@IQdCi`k4B+yh+z0@;B$d!KvS=*!-%f(+F31A< zAioFvn1Q*C8j;YWzKZHg-F_c<%3^CVLqmtHI_b17@;i}y7g!QI*O92*!p*T-Dql>m4i}G&Ac-xTmH3;BKDLb+Y=~n0IR~N=@?B@CEO~bglESc;)MDEOc=> zt{k`#qQc=$H3OoJz3p*tulfWo|I|Iy;E6H>$fG6OYJ^?D?;OoJ)SxPI#)M~7!Q4h{ zm%O$h%Kh?Uzyh?M9|V-|>)Vj{0W&Ng=g5}CuN!x%091Q4JB?ECDqE5&c~6(27ScW< z5A%WHJ)|@5QEdgjQO2(({`+kyyPet-*ngGcIc;gr3qK)x0^QS3Qld119Xh|;tiSO5 z2@3}2y&5EzvWsh*9?XG@f#K4XpfAgyFOxxaQy_<576~vQk2u2Ki32mmlK+qm*U4kRo~&=bgdHrY0;%mzY90Q)1!1mcwju_!~>+hSq{w|b^(vJ?U8PqR~<%cPhDxJ6M z_M*qCUtu^UC6m~$+O9Sf?{TwT-+9i=m(tV?1)BNkgNB;sPQISB{{6RyXJ}ra8aiPg zsHTZEYF=a?I_*)S9FUTmm#+>5G4s4S%o=K5mFEkV5Scq{Ih%T=c>8QLhjLtE)Us(g zbQYD3c~W)-4|X>C`~3&ycf(N2?&G1qbAKtn!7V$WXruE*?u%2hQR`vm(D|y;{OKVJ z<*3-`-zIZ7Xu_oxQ%x!Gse-61nz}S?Em&y?^GW*p4E^}t{^9olJLA@zCI9KC`$`|j z<^w%@oX$T#IQqNvl|rFX(twBmjZw8>$46`UBgl$-@_{f{{82qVvjES8R!9_ZpFP2! z`Qcehls6^`Q$^uiu^1i^0$@e(wbX^8Bc_-MA|gtXrx77Xk2uK@sHyN9Xo7TBWMH-b zP1nfDG(|oU0t-1Z@JLMz5mjs&K@${lJ4jwUJxbR~QJ<`?zul5P>zz>Drjbol=r8r9YPD-p*<)Bq@8=7%ak#1a+rfj;bFvs$7i?g_trK zgI6c?BRch|_6-mGE&AEeo;MwW{6v(N48U0$SI8QQSg0SK#-~K{5kkp-O3iapQEV7; zAN8m(OCDtm8w#Lt-v?@<1L< z0Y-Dp?Oompqo=xJ}NZaz#1MDq#?<&=+k%>b!fePQGvTo=`ANWs$W=8|2`( zk0m=vK$awuX)G#aqstjr-gD5oMuE;D^cZT z9wAJ3(`_Di>PH}w2eZHr@W`!o7&OKvl_MfORyVd(R|=U~N3zZ_mpK=TMnuaO`~m_s z62*m`GOg3YmfXM58Sf*btb*0bM*R@Ob{1ft5 zg!5t??$?$Yg=-|XI_Xf~L%*tXOc07@6w0U9$cS`whVLu7WxYn$ygn~h0cFV7p&r%= zM<-{?4@5nzCm9L(gyGzLv)pJHZe~=BVW}1}C{_x_-(1tIv@8O$B;%5hax#%jU7FB;*wFhJf< z-ubPail4k(puZ3XJdP-PV3s;E9=~50^Yo^F2AwrY-lu?fztz(2Ohdz&f%JM-%7oD z`c`p>v6B6F8^?Pe+hm@(pmon*L^h4V-E}Iw94n6H)2$J}k$XA4$Hy0E zQB3`jDky+etmt`ArD|b{QAs4HQY9@-;gu#iR6iwvTP(5;Af+`{`HWSm*S{CyeheY` z9P3sKgj8*=sj9wvWMBA^^5SDkn(_xu$$-a?qfTm!xohvz)JC5GxsPkDa%!_&f-TBw z@Bgj6PxE9{=E-}@I_Ho&*PJ@{vL}#XAwK4i&+PS&lcMaArZelGG}RBWKMnm` zKN$10=V}99FZ8gB@7h+i^|AJIw;G+Mu=KG=!M`7UM3dF}73=&zy=W>vRj79NL*#Kc zzENr{v}r5~X)H--Eb;q@h^@}lKvZxyRVg*q*fiCJG&LkNo%H2@U(9z~qH5!A?oev( zvT5!KX(lH$m(kQHSVi^yZ64-s8EtB!6QdoagtSa0wDjjxo3KYt|7}_DXdcgL_-WI+ z($q5ZBVf*>bvvO&m8)XoW`*Zi>oIrBdQK~SP3y0w&x>2G%{daS338nY)KJ?tcxW3U zw~e~FjaIq&B;m7ER%K@blEt>2Ewr5@x1FoGokzKO&!(JTPm%uIPvE>7MVt9mtl40> zox&|Si9vxv<%B{X$(+l{iTR82G>esYEKz;txJ-BQlPax(Hc#L)&a{&zrpwc>Qzo;s zt*KLS+tsX=F7pK*H$P)nBujC?h_Zri^lx_|; zrqbo_==kA}ZNBBegLfL}tW66umsg;;4B#Es7=3J!!wYOZ9*8cIp|@YJ?>cB@#=j1Ad@)vNVFvzBxXR_WCn6G7Tbef!Yhw=UG6ly#VsI0{9l-6P;h2 z{W@!hV~>%~X&he$9l?VCyWIIfe$&d&L;E6*6-`lkg2v$1W_iL)fL>EiuNWd@p~o52 zl7OXscHR_luGHcq0w#gPrL6Bv&~!NVKlJN7?oJj)mYE2|hIQ&UoW%hA=1kjtA0zuJ zj!3Mm+9SCUruu_@9^DTvx5VrtS{DY}X_Q+qAg>A<=K^Zlwr<~ouZiisA&%Jj*jKyH z&?ds51L{(8b*~AJ()l?>(QrZ$^zw6(7I`G6d#V{lCL!dWj-g+UDYlF$&yK178&gVb z3Fk)^@psOLs`_DUH$um6mW>2!&`hn}&izxqz9Fv`0JyF;q~;7=-6;@Fw9VR(@62hc zZlZcJOoe$lq4u;T980G0MV@m{KH_bTr=^|fAD@6c16PdGy;mK``6zJb+fPJNStkS} zh0F06IQ!e>aRNJt^0F9?3zhNyB@9w_me0tLqNg78o1G>reR+#R`Rq&=&bEdxAUNpc zJI!s|BS%m_(w`iq$8}Rta2)NjLp$Ftc#>w;XHX2qzYUa01lnHl*`en>XEk`fLq}%m zRDb#mAl})^Ezinn@0&k#SNyOuKHxvy{Opxz#k0~+FY-2S`$uA#IXw=j-Fj^mj=SB+ zvI&m`+*Gh=c%3qhDw;)da)P!CX+k$*ynH)sS?ATVZtJrC+_K?^4`pj4@usY&`;hOaG!ycMkMuT*BUbbU%G&A z2yAZ`luS&>*P{LltF*SwGME`YE$dpod8o+XSs9&B$G_m%0EbD!hRonMR`wqs9defT za55f8Q`o}xscKbK{BbKqkY_+1aJ72HZdbYWOYWX5I2K(#ENqOzfSE9tySG)P=U&Nh zfdngz|D^ASL*UcU^4|k)dj{ILWch1-jDC9)uS|BeY>&a>d)}SY^h+mUJDLY%m#cYt zNaV-$dbp?$FrWawcYVip{+rLnRHf7OgQqlE6%Yo|QPSXEWr?k*RQ8eUntFoM@7z5YnPuTKcl2$o(m8TRam%oeQ8@WV|w9kN!{x-g`8Rr=eY*~bM5}~T;Qv@F9doh`XoNgjL?2GP zUzuwOy%#t%NYI$?d6~04Fn-hIAN-Q-sn23}BHyh!8xAL8o$XKnB~%ng7}zld5#ZK6c&Elc--l z>;qnG-_V!t6+8m2H8~wd^GrH1=ZvIB$`~rFg;H=g-@d8-&`3DM#Sf9sagxI-G^6~I zm|x9)1sa)(muQu+UcP%R=Mw%j^=gWqXcWm z?s+1?3-m6Zg=p`&^?pnL?)jegm#ybT6`k#4t))cUV1=8Ovrc2Rme$FNA@%bgx?ajJ zjBgH}SUAxbP80R|@`Mn~Y}+nZioUyYKmAOgLgf*vc!j71*YHa<1StBFW_ zQF^cFmAD6?yohV^g{ZKyXeFp*YrNXp&_;n86O~h9^dCV3Gjc4Lq~}UfwSm~sSKIus zfA4R41Jr9eJ~q(ntn&%>^RB*~gJCoC=sfz<}lfAmw2`6zCmT)t#% zf-=QJfDc8SlV@h)d*8fp{s*!3l%C0o+3t-{v^@y;j!zQ++TikW{M;h0Y8yz@wVJFK ztb)UZbm^Ck>Z~HE`B8YlwT(JhcV>%X$!n9I5B(qY(nUpYnZv_*Dv2PlaRR|AUjxe# zJI-HGER}_cRTPJ)ms`S+2yE;P=z;|9Cz0-d)TRP_y4vvpcB3Nn>T4$e!swcQSin0j>vM8WV9;+z zgn36{h87eM0G)wmbu61u2^DBVG))pR#oIAXYIwj(Eur4H69Npw$_IUX<}^Dq@0WC6 z10LO|@`z^vDk3+<|AVnp7=ObG140xtV9ueV06~#$N+bcD8pFkHHv@v%PrYXv3)=pr zO)`yNGCQWUVje}%0EjkWMi}PU3#^D@v->%UiLW?&H5&KcBekD%a#q3s=DXV{Mo-2&H-{@;8{B;-?|m8V8GZROb|IN^#gCGC zX>s3ur6xjACJqkhVEF?QS?;s*qrR0AjH0Sx4zNE$ou$v-wN$x#U%K|pan30VDkTg= zY*;%a)k;2Wv5096Oo&X1jrDt8w$Lh=5Ji4-N2Yt}?&>tmM#`1V4FM>9>oX*Ty3wUn zc>;I)ZfQ}B!mHm)JY@dzygx#$x^x=Hvu2g1_|7B=o!`l=!o|6zpj+Dw!yw0Pz|0kv zEguu}7o@HxC=1ocAkM;$Y0JX5pm4^F<3SYZVXZPFYYZYZnQ1d+Ge`p?gTUrDo56K`0`VMLqs~NS3!ui?EYKn!(lcBK3Vsfono(^F>6J!zm5_j!>UcJSFrx#GdEp~d_ zw8Hmqlp`BLI1oj+&WVMnV5OThR7g_km{|DKWsmj2lI~xCQ4THe+I{^HXq(9f_XVh9 z>$@f4{9t?BqmHIppZhmw+&+xf4GI^y8@DK!)F{f1nXeodk0mVK{VYADw~`{~`toPb z?%7zYWMI``?vCk$#%ZzcUo|e*Hoe0KzaL!6yadG%9=R~jZmAZNcI*^|WX}D_^rv#j zuzlagki{JJfWH22Hl$PN!U!cOSgZ9=H~)OCxAWt`5`}z_8}odQv-Yg)s)t7^Bj>kr z!?My0%I!^iqcH!^A#*2TCx17RqZ;#Ii!}46z4EBYh~&`!(CZ(zDwQO(rog7<{Mj}4 zonN(|pYA@M*McC_j=gINE{XP?uW5&$4Gk6YWc2+rQXI>kyLEBxY2TgW%)945ZwX)P z3%@Ym{CqB!cD)aDFh&~FP#KM7y_Kz^*3LXpa0$Va-Z`RB9Mt9!pZ+Z*U8NmEKZ8*z zZQB5V%^R3wOdC|6c8Iwp(Wi-ZfR8BFZa%HdGSh(eQ!7HWaI>gsCbSQu)wsl|S;y4~ z@3-Eh5cCw(*V&2u?>*UAE-`g@lI}Wby>lV?=~6_vfHJP6}i(jt_*aD%w#G$bt-jrKHAU_c&4FX z#(_CjQ{&N84Ax**)|6caDVlY4xOR$#YK}y9sIaK@zw4@O&=elf98v0QbZxV4&o+{M z2IperMbp^D3IHWMIr~vu4R~-#35`^QT^rII4QBAk0iOc$WTcT!MBTJFNwn*-X7dDp zqpuRcnkPX-ePX4?QyCMM)DbCHQYPO#t1{^}cj|g!Rp+c%hZ2bA+9z52UwU=~u2jr2pygVWG81?;b~7=iYy7+`yeP3}XZUmojZ?AISZ3r1=6*<_51q zUP($+^TXvfo-7bQnb|6jAmKxQFN+|&z$~3bkmf+}G!WQ2L0o99^Tj(v<5FO%Uc`zV z#Se-+t<)REGsmabg7G58&B@R^m8d%e@pwBd0BaMe8;BdyeWvi=kB&&ZlYaZV@hb(n z1kSA65_ffFP_eREAW7p`u`Gg>$QMo&SgVxC$q~`Hq!%@X59&|r7px$hGRd|vmu|@M zJ5&MWE7>_6HD>)3-(~Ta`m||XH(F|tjX0VQU-Tx@vqExcJ8==6HT2?E`fD8eL?D7Q zC|xFtAhCe3$|8to>7xA-eM58zu@RYEh|8lro32dWGlhy6LFy^x1nnAPI~2@6#mwJ8SU1-9DNEu+M64U@7R?|evp_fU z^dtP^>GQ8goeFkxA(#<>F*BmMqhRw7({)!v)pMnNC`}5Kk=hEDI}C%1;J-|Z8|&0D zU{h&G{W+)q{TxJme>T$MWL#k~U_AxqIu%`OAn&vty_ zLGYYW6ihfpqew)U6kf7~c<&VaINp#bQVj7Kwc!^)(IvpE2nu8(c9^I@1{@rEmoE4G zO4n;TM$zl^okf{)KTp$NHnNF@aiJjp;)tAW5t|L5LVd(rmdMRh!j;+BpW|YtgwYHz zAjchh?^FP!6ML^gpCJw~GfnT`7W^WpBJ+z{lqQ-U04!OevHMWq6hGW(V(&^6L;+Bd zkvG`L__L_$ydnN&JsY$xp$&Ao1$M(qmmp%ctdHo9g002sJDJDc%LBOwB;LhQ-#ks_ zB@ypoA{iTc?{r7$L=-cT@Lnn`Ibi(thl!e+=0U#M=(wR52sjlANc=1Gn<7XpLi+Yb zhY!?t1G{1gTh?0{084!NFKt}&Q80BZyg9wp(x|4}YP>sk7p#PVCG>Fd%BHUm7RbL!HO?$Lo z4t2LCMofpB7`!R5hUQr_2S?UbXal4>Is2A*FRSvqNBZ^$-D-%MEyNPu*jY2g()g4O z-Xh6os#fCrClQ1w*-Rj$HnBl>XJCR6XH);u60LBF(KP{^2%$XdjB6o6Xper>1!-Q< zLWnnjI-4Wbrv_Pmq+QM7UM zZq^NA-0yccypZHo6q6JT&9 zFtllb@ZkK1z4GL4wy9itUr;!08NCTU$Dl3;Bloa>+PTT#*Z`rCn9hCL9|LPF;Q>od zf#YEj;@8Ic79#lB7KP}{_)&|OiwY@EUqVFWO}|qFRI_1z67`H=fNp*Eb_8D9Km(D4 zO`UqFfCo`ynZS7f@09t@Lv34h1cMJZ2n(=tOihWWzpSBSGtxS3iw-l zvpM_FyVw)$oq1e3^*H@0t3!4!+BIob6t;8^`-c_2E1~c!{Ew6{jO$M+YZGFwVTS2u z>1!#ZxS6AtnCSJ`p5%XcV6A#RAq)kN1D>s}CtV`xy?AJvf!q_=NR``2ySJwdHuHpu#K6ts z=*^Oh&C;UHcXgX(J)7kdo9|aQKm6YO2;Zt;+o}}as*>BPzP(jru~qB5RTsEbf7{%B zo%DPi<&NKK+I`ME9hE`y0P;M5imeI}#uPN{5^_5w3j|n!Q?SwcSp;Z_NAvxyEJGYX z+AwuRdSrP#kHxja@tk=ZloYFoA>lX^01rpwXn~Z@jP2Upt&c&TU*WjQbzFL0G#tR2 zpyJ$oxChvf!a)(HS<&CUJZqD7J`CeNXLwHhre0Ky>k!7b8E$v0BG)8$t5v;H7oxab z0T2qH^#OZu#7(Y3Y54&#iD1T$Tzmx=uD~DBgJ$o0WspHY9tbDpIer_t)w)~t)hmVM z0Y(rwNg&}$;DA1^)q;UG3-k?+Z()o3ZU}?CCTuj3(iiqp8$5wwsPMtg=Bpiw;noE` z(&N+zR}tM62u{)Q0=aII7NX)GMI#sv-1q?y$r~30rvdQnRKCL*ZvEG`>GOC0(fcy? z?hf9k#QpRFfISi`yJvUNL0cfWMjXf4w$GSNNHg{XV|)Z$yaf3?nAqdYf+BeEZbExo zoP0=U0HDb_BpG|kxg5lQIh4AE9NQ)FQ28pe`&9`0xswQt$n9myA&J8a9P5X}er8lS z{-t`Do(CseBt!R)NaX!nC+;`+JZbrfZdS*wVaGq&@LIh*Ibp{s>XHT{*o>ZNNM9SW{=Y!{&n?g z+(@erZXNdvf0)Vt+YP_Xa1{nr9IHMEbhh+LHTE=9fc>V~ZVmKJiS-5L9eu5>^QFIv zbVeVf^8dEDiVTxSI$S>~6F%|@KY~-?uQB+-r~vrd0hQ%10V5dM5a7%MapJeHT$~IQ zx!L!6`?`2JUF^H)_$7vK;OCE>*^zev0yhd(r0&&nsy-mjf~I63=B a^|ylkZ{^j$Rq}tUwg1)_ZQ%hx>Hh$=A;4Gw literal 0 HcmV?d00001 diff --git a/www/fullscanb.gif b/www/fullscanb.gif new file mode 100644 index 0000000000000000000000000000000000000000..becb5149bc90804f2524ff8dfd21cc2314620af2 GIT binary patch literal 11946 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 G0RTIk?WjTk literal 0 HcmV?d00001 diff --git a/www/optimizer.tcl b/www/optimizer.tcl new file mode 100644 index 0000000000..5b2897e2bb --- /dev/null +++ b/www/optimizer.tcl @@ -0,0 +1,265 @@ +# +# Run this TCL script to generate HTML for the goals.html file. +# +set rcsid {$Id: optimizer.tcl,v 1.1 2005/08/30 22:44:06 drh Exp $} +source common.tcl +header {The SQLite Query Optimizer} + +proc CODE {text} { + puts "
"
+  puts $text
+  puts "
" +} +proc IMAGE {name {caption {}}} { + puts "
" + if {$caption!=""} { + puts "
$caption" + } + puts "
" +} +proc PARAGRAPH {text} { + puts "

$text

\n" +} +proc HEADING {level name} { + puts "$name" +} + +HEADING 1 {The SQLite Query Optimizer} + +PARAGRAPH { + This article describes how the SQLite query optimizer works. + This is not something you have to know in order to use SQLite - many + programmers use SQLite successfully without the slightest hint of what + goes on in the inside. + But a basic understanding of what SQLite is doing + behind the scenes will help you to write more efficient SQL. And the + knowledge gained by studying the SQLite query optimizer has broad + application since most other relational database engines operate + similarly. + A solid understanding of how the query optimizer works is also + required before making meaningful changes or additions to the SQLite, so + this article should be read closely by anyone aspiring + to hack the source code. +} + +HEADING 2 Background + +PARAGRAPH { + It is important to understand that SQL is a programming language. + SQL is a perculiar programming language in that it + describes what the programmer wants to compute not how + to compute it as most other programming languages do. + But perculiar or not, SQL is still just a programming language. +} + +PARAGRAPH { + It is very helpful to think of each SQL statement as a separate + program. + An important job of the SQL database engine is to translate each + SQL statement from its descriptive form that specifies what the + information is desired (the what) + into a procedural form that specifies how to go + about acquiring the desired information (the how). + The task of translating the what into a + how is assigned to the query optimizer. +} + +PARAGRAPH { + The beauty of SQL comes from the fact that the optimizer frees the programmer + from having to worry over the details of how. The programmer + only has to specify the what and then leave the optimizer + to deal with all of the minutae of implementing the + how. Thus the programmer is able to think and work at a + much higher level and leave the optimizer to stress over the low-level + work. +} + +HEADING 2 {Database Layout} + +PARAGRAPH { + An SQLite database consists of one or more "b-trees". + Each b-tree contains zero or more "rows". + A single row contains a "key" and some "data". + In general, both the key and the data are arbitrary binary + data of any length. + The keys must all be unique within a single b-tree. + Rows are stored in order of increasing key values - each + b-tree has a comparision functions for keys that determines + this order. +} + +PARAGRAPH { + In SQLite, each SQL table is stored as a b-tree where the + key is a 64-bit integer and the data is the content of the + table row. The 64-bit integer key is the ROWID. And, of course, + if the table has an INTEGER PRIMARY KEY, then that integer is just + an alias for the ROWID. +} + +PARAGRAPH { + Consider the following block of SQL code: +} + +CODE { + CREATE TABLE ex1( + id INTEGER PRIMARY KEY, + x VARCHAR(30), + y INTEGER + ); + INSERT INTO ex1 VALUES(NULL,'abc',12345); + INSERT INTO ex1 VALUES(NULL,456,'def'); + INSERT INTO ex1 VALUES(100,'hello','world'); + INSERT INTO ex1 VALUES(-5,'abc','xyz'); + INSERT INTO ex1 VALUES(54321,NULL,987); +} + +PARAGRAPH { + This code generates a new b-tree (named "ex1") containing 5 rows. + This table can be visualized as follows: +} +IMAGE table-ex1b2.gif + +PARAGRAPH { + Note that the key for each row if the b-tree is the INTEGER PRIMARY KEY + for that row. (Remember that the INTEGER PRIMARY KEY is just an alias + for the ROWID.) The other fields of the table form the data for each + entry in the b-tree. Note also that the b-tree entries are in ROWID order + which is different from the order that they were originally inserted. +} + +PARAGRAPH { + Now consider the following SQL query: +} +CODE { + SELECT y FROM ex1 WHERE x=456; +} + +PARAGRAPH { + When the SQLite parser and query optimizer are handed this query, they + have to translate it into a procedure that will find the desired result. + In this case, they do what is call a "full table scan". They start + at the beginning of the b-tree that contains the table and visit each + row. Within each row, the value of the "x" column is tested and when it + is found to match 456, the value of the "y" column is output. + We can represent this procedure graphically as follows: +} +IMAGE fullscanb.gif + +PARAGRAPH { + A full table scan is the access method of last resort. It will always + work. But if the table contains millions of rows and you are only looking + a single one, it might take a very long time to find the particular row + you are interested in. + In particular, the time needed to access a single row of the table is + proportional to the total number of rows in the table. + So a big part of the job of the optimizer is to try to find ways to + satisfy the query without doing a full table scan. +} +PARAGRAPH { + The usual way to avoid doing a full table scan is use a binary search + to find the particular row or rows of interest in the table. + Consider the next query which searches on rowid instead of x: +} +CODE { + SELECT y FROM ex1 WHERE rowid=2; +} + +PARAGRAPH { + In the previous query, we could not use a binary search for x because + the values of x were not ordered. But the rowid values are ordered. + So instead of having to visit every row of the b-tree looking for one + that has a rowid value of 2, we can do a binary search for that particular + row and output its corresponding y value. We show this graphically + as follows: +} +IMAGE direct1b.gif + +PARAGRAPH { + When doing a binary search, we only have to look at a number of + rows with is proportional to the logorithm of the number of entries + in the table. For a table with just 5 entires as in the example above, + the difference between a full table scan and a binary search is + negligible. In fact, the full table scan might be faster. But in + a database that has 5 million rows, a binary search will be able to + find the desired row in only about 23 tries, whereas the full table + scan will need to look at all 5 million rows. So the binary search + is about 200,000 times faster in that case. +} +PARAGRAPH { + A 200,000-fold speed improvement is huge. So we always want to do + a binary search rather than a full table scan when we can. +} +PARAGRAPH { + The problem with a binary search is that the it only works if the + fields you are search for are in sorted order. So we can do a binary + search when looking up the rowid because the rows of the table are + sorted by rowid. But we cannot use a binary search when looking up + x because the values in the x column are in no particular order. +} +PARAGRAPH { + The way to work around this problem and to permit binary searching on + fields like x is to provide an index. + An index is another b-tree. + But in the index b-tree the key is not the rowid but rather the field + or fields being indexed followed by the rowid. + The data in an index b-tree is empty - it is not needed or used. + The following diagram shows an index on the x field of our example table: +} +IMAGE index-ex1-x-b.gif + +PARAGRAPH { + An important point to note in the index are that they keys of the + b-tree are in sorted order. (Recall that NULL values in SQLite sort + first, followed by numeric values in numerical order, then strings, and + finally BLOBs.) This is the property that will allow use to do a + binary search for the field x. The rowid is also included in every + key for two reasons. First, by including the rowid we guarantee that + every key will be unique. And second, the rowid will be used to look + up the actual table entry after doing the binary search. Finally, note + that the data portion of the index b-tree serves no purpose and is thus + kept empty to save space in the disk file. +} +PARAGRAPH { + Remember what the original query example looked like: +} +CODE { + SELECT y FROM ex1 WHERE x=456; +} + +PARAGRAPH { + The first time this query was encountered we had to do a full table + scan. But now that we have an index on x, we can do a binary search + on that index for the entry where x==456. Then from that entry we + can find the rowid value and use the rowid to look up the corresponding + entry in the original table. From the entry in the original table, + we can find the value y and return it as our result. The following + diagram shows this process graphically: +} +IMAGE indirect1b1.gif + +PARAGRAPH { + With the index, we are able to look up an entry based on the value of + x after visiting only a logorithmic number of b-tree entries. Unlike + the case where we were searching using rowid, we have to do two binary + searches for each output row. But for a 5-million row table, that is + still only 46 searches instead of 5 million for a 100,000-fold speedup. +} + +HEADING 3 {Parsing The WHERE Clause} + + + +# parsing the where clause +# rowid lookup +# index lookup +# index lookup without the table +# how an index is chosen +# joins +# join reordering +# order by using an index +# group by using an index +# OR -> IN optimization +# Bitmap indices +# LIKE and GLOB optimization +# subquery flattening +# MIN and MAX optimizations diff --git a/www/table-ex1b2.gif b/www/table-ex1b2.gif new file mode 100644 index 0000000000000000000000000000000000000000..5f68e0a9d2546455cfce06cd0dc5cf5d8c081e8f GIT binary patch literal 10888 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 ej`?