System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact efe56b944ca940ed45030c57ea23db493bef0d88:


0000: 3c 68 74 6d 6c 20 64 69 72 3d 22 4c 54 52 22 20  <html dir="LTR" 
0010: 78 6d 6c 6e 73 3d 22 68 74 74 70 3a 2f 2f 77 77  xmlns="http://ww
0020: 77 2e 77 33 2e 6f 72 67 2f 31 39 39 39 2f 78 68  w.w3.org/1999/xh
0030: 74 6d 6c 22 20 78 6d 6c 6e 73 3a 78 6c 69 6e 6b  tml" xmlns:xlink
0040: 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e 77 33 2e  ="http://www.w3.
0050: 6f 72 67 2f 31 39 39 39 2f 78 6c 69 6e 6b 22 20  org/1999/xlink" 
0060: 78 6d 6c 6e 73 3a 4d 53 48 65 6c 70 3d 22 68 74  xmlns:MSHelp="ht
0070: 74 70 3a 2f 2f 6d 73 64 6e 2e 6d 69 63 72 6f 73  tp://msdn.micros
0080: 6f 66 74 2e 63 6f 6d 2f 6d 73 68 65 6c 70 22 20  oft.com/mshelp" 
0090: 78 6d 6c 6e 73 3a 74 6f 6f 6c 3d 22 68 74 74 70  xmlns:tool="http
00a0: 3a 2f 2f 77 77 77 2e 6d 69 63 72 6f 73 6f 66 74  ://www.microsoft
00b0: 2e 63 6f 6d 2f 74 6f 6f 6c 74 69 70 22 20 78 6d  .com/tooltip" xm
00c0: 6c 6e 73 3a 6e 64 6f 63 3d 22 75 72 6e 3a 6e 64  lns:ndoc="urn:nd
00d0: 6f 63 2d 70 72 65 70 72 6f 63 65 73 73 22 3e 0a  oc-preprocess">.
00e0: 20 20 3c 68 65 61 64 3e 0a 20 20 20 20 3c 6d 65    <head>.    <me
00f0: 74 61 20 68 74 74 70 2d 65 71 75 69 76 3d 22 43  ta http-equiv="C
0100: 6f 6e 74 65 6e 74 2d 54 79 70 65 22 20 63 6f 6e  ontent-Type" con
0110: 74 65 6e 74 3d 22 74 65 78 74 2f 68 74 6d 6c 3b  tent="text/html;
0120: 20 63 68 61 72 73 65 74 3d 57 69 6e 64 6f 77 73   charset=Windows
0130: 2d 31 32 35 32 22 20 2f 3e 0a 20 20 20 20 3c 74  -1252" />.    <t
0140: 69 74 6c 65 3e 4f 70 74 69 6d 69 7a 69 6e 67 20  itle>Optimizing 
0150: 59 6f 75 72 20 51 75 65 72 69 65 73 3c 2f 74 69  Your Queries</ti
0160: 74 6c 65 3e 0a 20 20 20 20 3c 6c 69 6e 6b 20 72  tle>.    <link r
0170: 65 6c 3d 22 73 74 79 6c 65 73 68 65 65 74 22 20  el="stylesheet" 
0180: 74 79 70 65 3d 22 74 65 78 74 2f 63 73 73 22 20  type="text/css" 
0190: 68 72 65 66 3d 22 6e 64 6f 63 2e 63 73 73 22 3e  href="ndoc.css">
01a0: 20 3c 2f 6c 69 6e 6b 3e 0a 20 20 20 20 3c 6c 69   </link>.    <li
01b0: 6e 6b 20 72 65 6c 3d 22 73 74 79 6c 65 73 68 65  nk rel="styleshe
01c0: 65 74 22 20 74 79 70 65 3d 22 74 65 78 74 2f 63  et" type="text/c
01d0: 73 73 22 20 68 72 65 66 3d 22 75 73 65 72 2e 63  ss" href="user.c
01e0: 73 73 22 3e 20 3c 2f 6c 69 6e 6b 3e 0a 20 20 20  ss"> </link>.   
01f0: 20 3c 73 63 72 69 70 74 20 74 79 70 65 3d 22 74   <script type="t
0200: 65 78 74 2f 6a 61 76 61 73 63 72 69 70 74 22 20  ext/javascript" 
0210: 73 72 63 3d 22 6e 64 6f 63 2e 6a 73 22 3e 20 3c  src="ndoc.js"> <
0220: 2f 73 63 72 69 70 74 3e 0a 20 20 3c 2f 68 65 61  /script>.  </hea
0230: 64 3e 0a 20 20 3c 62 6f 64 79 20 73 74 79 6c 65  d>.  <body style
0240: 3d 22 64 69 73 70 6c 61 79 3a 20 6e 6f 6e 65 3b  ="display: none;
0250: 22 3e 0a 20 20 20 20 3c 69 6e 70 75 74 20 74 79  ">.    <input ty
0260: 70 65 3d 22 68 69 64 64 65 6e 22 20 69 64 3d 22  pe="hidden" id="
0270: 75 73 65 72 44 61 74 61 43 61 63 68 65 22 20 63  userDataCache" c
0280: 6c 61 73 73 3d 22 75 73 65 72 44 61 74 61 53 74  lass="userDataSt
0290: 79 6c 65 22 20 2f 3e 0a 20 20 20 20 3c 69 6e 70  yle" />.    <inp
02a0: 75 74 20 74 79 70 65 3d 22 68 69 64 64 65 6e 22  ut type="hidden"
02b0: 20 69 64 3d 22 68 69 64 64 65 6e 53 63 72 6f 6c   id="hiddenScrol
02c0: 6c 4f 66 66 73 65 74 22 20 2f 3e 0a 20 20 20 20  lOffset" />.    
02d0: 3c 69 6d 67 20 69 64 3d 22 64 72 6f 70 44 6f 77  <img id="dropDow
02e0: 6e 49 6d 61 67 65 22 20 73 74 79 6c 65 3d 22 64  nImage" style="d
02f0: 69 73 70 6c 61 79 3a 6e 6f 6e 65 3b 20 68 65 69  isplay:none; hei
0300: 67 68 74 3a 30 3b 20 77 69 64 74 68 3a 30 3b 22  ght:0; width:0;"
0310: 20 73 72 63 3d 22 64 72 70 64 6f 77 6e 2e 67 69   src="drpdown.gi
0320: 66 22 20 2f 3e 0a 20 20 20 20 3c 69 6d 67 20 69  f" />.    <img i
0330: 64 3d 22 64 72 6f 70 44 6f 77 6e 48 6f 76 65 72  d="dropDownHover
0340: 49 6d 61 67 65 22 20 73 74 79 6c 65 3d 22 64 69  Image" style="di
0350: 73 70 6c 61 79 3a 6e 6f 6e 65 3b 20 68 65 69 67  splay:none; heig
0360: 68 74 3a 30 3b 20 77 69 64 74 68 3a 30 3b 22 20  ht:0; width:0;" 
0370: 73 72 63 3d 22 64 72 70 64 6f 77 6e 5f 6f 72 61  src="drpdown_ora
0380: 6e 67 65 2e 67 69 66 22 20 2f 3e 0a 20 20 20 20  nge.gif" />.    
0390: 3c 69 6d 67 20 69 64 3d 22 63 6f 6c 6c 61 70 73  <img id="collaps
03a0: 65 49 6d 61 67 65 22 20 73 74 79 6c 65 3d 22 64  eImage" style="d
03b0: 69 73 70 6c 61 79 3a 6e 6f 6e 65 3b 20 68 65 69  isplay:none; hei
03c0: 67 68 74 3a 30 3b 20 77 69 64 74 68 3a 30 3b 22  ght:0; width:0;"
03d0: 20 73 72 63 3d 22 63 6f 6c 6c 61 70 73 65 2e 67   src="collapse.g
03e0: 69 66 22 20 2f 3e 0a 20 20 20 20 3c 69 6d 67 20  if" />.    <img 
03f0: 69 64 3d 22 65 78 70 61 6e 64 49 6d 61 67 65 22  id="expandImage"
0400: 20 73 74 79 6c 65 3d 22 64 69 73 70 6c 61 79 3a   style="display:
0410: 6e 6f 6e 65 3b 20 68 65 69 67 68 74 3a 30 3b 20  none; height:0; 
0420: 77 69 64 74 68 3a 30 3b 22 20 73 72 63 3d 22 65  width:0;" src="e
0430: 78 70 2e 67 69 66 22 20 2f 3e 0a 20 20 20 20 3c  xp.gif" />.    <
0440: 69 6d 67 20 69 64 3d 22 63 6f 6c 6c 61 70 73 65  img id="collapse
0450: 41 6c 6c 49 6d 61 67 65 22 20 73 74 79 6c 65 3d  AllImage" style=
0460: 22 64 69 73 70 6c 61 79 3a 6e 6f 6e 65 3b 20 68  "display:none; h
0470: 65 69 67 68 74 3a 30 3b 20 77 69 64 74 68 3a 30  eight:0; width:0
0480: 3b 22 20 73 72 63 3d 22 63 6f 6c 6c 61 6c 6c 2e  ;" src="collall.
0490: 67 69 66 22 20 2f 3e 0a 20 20 20 20 3c 69 6d 67  gif" />.    <img
04a0: 20 69 64 3d 22 65 78 70 61 6e 64 41 6c 6c 49 6d   id="expandAllIm
04b0: 61 67 65 22 20 73 74 79 6c 65 3d 22 64 69 73 70  age" style="disp
04c0: 6c 61 79 3a 6e 6f 6e 65 3b 20 68 65 69 67 68 74  lay:none; height
04d0: 3a 30 3b 20 77 69 64 74 68 3a 30 3b 22 20 73 72  :0; width:0;" sr
04e0: 63 3d 22 65 78 70 61 6c 6c 2e 67 69 66 22 20 2f  c="expall.gif" /
04f0: 3e 0a 20 20 20 20 3c 69 6d 67 20 69 64 3d 22 63  >.    <img id="c
0500: 6f 70 79 49 6d 61 67 65 22 20 73 74 79 6c 65 3d  opyImage" style=
0510: 22 64 69 73 70 6c 61 79 3a 6e 6f 6e 65 3b 20 68  "display:none; h
0520: 65 69 67 68 74 3a 30 3b 20 77 69 64 74 68 3a 30  eight:0; width:0
0530: 3b 22 20 73 72 63 3d 22 63 6f 70 79 63 6f 64 65  ;" src="copycode
0540: 2e 67 69 66 22 20 2f 3e 0a 20 20 20 20 3c 69 6d  .gif" />.    <im
0550: 67 20 69 64 3d 22 63 6f 70 79 48 6f 76 65 72 49  g id="copyHoverI
0560: 6d 61 67 65 22 20 73 74 79 6c 65 3d 22 64 69 73  mage" style="dis
0570: 70 6c 61 79 3a 6e 6f 6e 65 3b 20 68 65 69 67 68  play:none; heigh
0580: 74 3a 30 3b 20 77 69 64 74 68 3a 30 3b 22 20 73  t:0; width:0;" s
0590: 72 63 3d 22 63 6f 70 79 63 6f 64 65 48 69 67 68  rc="copycodeHigh
05a0: 6c 69 67 68 74 2e 67 69 66 22 20 2f 3e 0a 20 20  light.gif" />.  
05b0: 20 20 3c 64 69 76 20 69 64 3d 22 68 65 61 64 65    <div id="heade
05c0: 72 22 3e 0a 20 20 20 20 20 20 3c 74 61 62 6c 65  r">.      <table
05d0: 20 77 69 64 74 68 3d 22 31 30 30 25 22 20 69 64   width="100%" id
05e0: 3d 22 74 6f 70 54 61 62 6c 65 22 3e 0a 20 20 20  ="topTable">.   
05f0: 20 20 20 20 20 3c 74 72 20 69 64 3d 22 68 65 61       <tr id="hea
0600: 64 65 72 54 61 62 6c 65 52 6f 77 31 22 3e 0a 20  derTableRow1">. 
0610: 20 20 20 20 20 20 20 20 20 3c 74 64 20 61 6c 69           <td ali
0620: 67 6e 3d 22 6c 65 66 74 22 3e 0a 20 20 20 20 20  gn="left">.     
0630: 20 20 20 20 20 20 20 3c 73 70 61 6e 20 69 64 3d         <span id=
0640: 22 72 75 6e 6e 69 6e 67 48 65 61 64 65 72 54 65  "runningHeaderTe
0650: 78 74 22 3e 4f 70 74 69 6d 69 7a 69 6e 67 20 66  xt">Optimizing f
0660: 6f 72 20 53 51 4c 69 74 65 3c 2f 73 70 61 6e 3e  or SQLite</span>
0670: 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e  .          </td>
0680: 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20  .        </tr>. 
0690: 20 20 20 20 20 20 20 3c 74 72 20 69 64 3d 22 68         <tr id="h
06a0: 65 61 64 65 72 54 61 62 6c 65 52 6f 77 32 22 3e  eaderTableRow2">
06b0: 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 20 61  .          <td a
06c0: 6c 69 67 6e 3d 22 6c 65 66 74 22 3e 0a 20 20 20  lign="left">.   
06d0: 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 69           <span i
06e0: 64 3d 22 6e 73 72 54 69 74 6c 65 22 3e 53 51 4c  d="nsrTitle">SQL
06f0: 69 74 65 2e 4e 45 54 20 43 6c 61 73 73 20 4c 69  ite.NET Class Li
0700: 62 72 61 72 79 20 44 6f 63 75 6d 65 6e 74 61 74  brary Documentat
0710: 69 6f 6e 3c 2f 73 70 61 6e 3e 0a 20 20 20 20 20  ion</span>.     
0720: 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20       </td>.     
0730: 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20     </tr>.       
0740: 20 3c 74 72 20 69 64 3d 22 68 65 61 64 65 72 54   <tr id="headerT
0750: 61 62 6c 65 52 6f 77 33 22 20 73 74 79 6c 65 3d  ableRow3" style=
0760: 22 64 69 73 70 6c 61 79 3a 6e 6f 6e 65 22 3e 0a  "display:none">.
0770: 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20            <td>. 
0780: 20 20 20 20 20 20 20 20 20 20 20 3c 61 20 69 64             <a id
0790: 3d 22 73 65 65 41 6c 73 6f 53 65 63 74 69 6f 6e  ="seeAlsoSection
07a0: 4c 69 6e 6b 22 20 68 72 65 66 3d 22 23 73 65 65  Link" href="#see
07b0: 41 6c 73 6f 54 6f 67 67 6c 65 22 20 6f 6e 63 6c  AlsoToggle" oncl
07c0: 69 63 6b 3d 22 4f 70 65 6e 53 65 63 74 69 6f 6e  ick="OpenSection
07d0: 28 73 65 65 41 6c 73 6f 54 6f 67 67 6c 65 29 22  (seeAlsoToggle)"
07e0: 3e 53 65 65 20 41 6c 73 6f 3c 2f 61 3e 0a 20 20  >See Also</a>.  
07f0: 20 20 20 20 20 20 20 20 20 20 3c 61 20 69 64 3d            <a id=
0800: 22 65 78 61 6d 70 6c 65 53 65 63 74 69 6f 6e 4c  "exampleSectionL
0810: 69 6e 6b 22 20 68 72 65 66 3d 22 23 63 6f 64 65  ink" href="#code
0820: 45 78 61 6d 70 6c 65 54 6f 67 67 6c 65 22 20 6f  ExampleToggle" o
0830: 6e 63 6c 69 63 6b 3d 22 4f 70 65 6e 53 65 63 74  nclick="OpenSect
0840: 69 6f 6e 28 63 6f 64 65 45 78 61 6d 70 6c 65 54  ion(codeExampleT
0850: 6f 67 67 6c 65 29 22 3e 45 78 61 6d 70 6c 65 3c  oggle)">Example<
0860: 2f 61 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f  /a>.          </
0870: 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72  td>.        </tr
0880: 3e 0a 20 20 20 20 20 3c 2f 74 61 62 6c 65 3e 0a  >.     </table>.
0890: 20 20 20 20 20 20 3c 74 61 62 6c 65 20 77 69 64        <table wid
08a0: 74 68 3d 22 31 30 30 25 22 20 69 64 3d 22 62 6f  th="100%" id="bo
08b0: 74 74 6f 6d 54 61 62 6c 65 22 20 63 65 6c 6c 73  ttomTable" cells
08c0: 70 61 63 69 6e 67 3d 22 30 22 20 63 65 6c 6c 70  pacing="0" cellp
08d0: 61 64 64 69 6e 67 3d 22 30 22 20 73 74 79 6c 65  adding="0" style
08e0: 3d 22 64 69 73 70 6c 61 79 3a 6e 6f 6e 65 22 3e  ="display:none">
08f0: 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20  .        <tr>.  
0900: 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20          <td>.   
0910: 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e 20 6f           <span o
0920: 6e 63 6c 69 63 6b 3d 22 45 78 70 61 6e 64 43 6f  nclick="ExpandCo
0930: 6c 6c 61 70 73 65 41 6c 6c 28 74 6f 67 67 6c 65  llapseAll(toggle
0940: 41 6c 6c 49 6d 61 67 65 29 22 20 73 74 79 6c 65  AllImage)" style
0950: 3d 22 63 75 72 73 6f 72 3a 64 65 66 61 75 6c 74  ="cursor:default
0960: 3b 22 20 6f 6e 6b 65 79 70 72 65 73 73 3d 22 45  ;" onkeypress="E
0970: 78 70 61 6e 64 43 6f 6c 6c 61 70 73 65 41 6c 6c  xpandCollapseAll
0980: 5f 43 68 65 63 6b 4b 65 79 28 74 6f 67 67 6c 65  _CheckKey(toggle
0990: 41 6c 6c 49 6d 61 67 65 29 22 20 74 61 62 69 6e  AllImage)" tabin
09a0: 64 65 78 3d 22 30 22 3e 0a 20 20 20 20 20 20 20  dex="0">.       
09b0: 20 20 20 20 20 20 20 3c 69 6d 67 20 49 44 3d 22         <img ID="
09c0: 74 6f 67 67 6c 65 41 6c 6c 49 6d 61 67 65 22 20  toggleAllImage" 
09d0: 63 6c 61 73 73 3d 22 74 6f 67 67 6c 65 41 6c 6c  class="toggleAll
09e0: 22 20 73 72 63 3d 22 63 6f 6c 6c 61 6c 6c 2e 67  " src="collall.g
09f0: 69 66 22 20 2f 3e 0a 20 20 20 20 20 20 20 20 20  if" />.         
0a00: 20 20 20 20 20 3c 6c 61 62 65 6c 20 69 64 3d 22       <label id="
0a10: 63 6f 6c 6c 61 70 73 65 41 6c 6c 4c 61 62 65 6c  collapseAllLabel
0a20: 22 20 66 6f 72 3d 22 74 6f 67 67 6c 65 41 6c 6c  " for="toggleAll
0a30: 49 6d 61 67 65 22 20 73 74 79 6c 65 3d 22 64 69  Image" style="di
0a40: 73 70 6c 61 79 3a 20 6e 6f 6e 65 3b 22 3e 0a 09  splay: none;">..
0a50: 09 09 09 09 09 09 43 6f 6c 6c 61 70 73 65 20 41  ......Collapse A
0a60: 6c 6c 0a 09 09 09 09 09 09 3c 2f 6c 61 62 65 6c  ll.......</label
0a70: 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  >.              
0a80: 3c 6c 61 62 65 6c 20 69 64 3d 22 65 78 70 61 6e  <label id="expan
0a90: 64 41 6c 6c 4c 61 62 65 6c 22 20 66 6f 72 3d 22  dAllLabel" for="
0aa0: 74 6f 67 67 6c 65 41 6c 6c 49 6d 61 67 65 22 20  toggleAllImage" 
0ab0: 73 74 79 6c 65 3d 22 64 69 73 70 6c 61 79 3a 20  style="display: 
0ac0: 6e 6f 6e 65 3b 22 3e 0a 09 09 09 09 09 09 09 45  none;">........E
0ad0: 78 70 61 6e 64 20 41 6c 6c 0a 09 09 09 09 09 09  xpand All.......
0ae0: 3c 2f 6c 61 62 65 6c 3e 0a 20 20 20 20 20 20 20  </label>.       
0af0: 20 20 20 20 20 3c 2f 73 70 61 6e 3e 0a 20 20 20       </span>.   
0b00: 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20         </td>.   
0b10: 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20       </tr>.     
0b20: 20 3c 2f 74 61 62 6c 65 3e 0a 20 20 20 20 3c 2f   </table>.    </
0b30: 64 69 76 3e 0a 20 20 20 20 3c 64 69 76 20 69 64  div>.    <div id
0b40: 3d 22 6d 61 69 6e 53 65 63 74 69 6f 6e 22 3e 0a  ="mainSection">.
0b50: 20 20 20 20 3c 64 69 76 20 69 64 3d 22 6d 61 69      <div id="mai
0b60: 6e 42 6f 64 79 22 3e 0a 20 20 20 20 20 20 3c 68  nBody">.      <h
0b70: 31 20 63 6c 61 73 73 3d 22 68 65 61 64 69 6e 67  1 class="heading
0b80: 22 3e 54 69 70 73 20 6f 6e 20 4f 70 74 69 6d 69  ">Tips on Optimi
0b90: 7a 69 6e 67 20 59 6f 75 72 20 51 75 65 72 69 65  zing Your Querie
0ba0: 73 3c 2f 68 31 3e 0a 20 20 20 20 20 20 3c 70 3e  s</h1>.      <p>
0bb0: 54 68 65 20 6e 65 78 74 20 66 65 77 20 70 61 72  The next few par
0bc0: 61 67 72 61 70 68 73 20 77 69 6c 6c 20 61 74 74  agraphs will att
0bd0: 65 6d 70 74 20 74 6f 20 67 69 76 65 20 79 6f 75  empt to give you
0be0: 20 61 20 66 65 77 20 72 75 64 69 6d 65 6e 74 61   a few rudimenta
0bf0: 72 79 20 72 75 6c 65 73 20 66 6f 72 20 0a 20 20  ry rules for .  
0c00: 20 20 20 20 20 20 73 70 65 65 64 69 6e 67 20 75        speeding u
0c10: 70 20 79 6f 75 72 20 71 75 65 72 69 65 73 20 69  p your queries i
0c20: 6e 20 67 65 6e 65 72 61 6c 2c 20 61 6e 64 20 65  n general, and e
0c30: 73 70 65 63 69 61 6c 6c 79 20 68 6f 77 20 53 51  specially how SQ
0c40: 4c 69 74 65 20 69 73 20 61 64 76 65 72 73 65 6c  Lite is adversel
0c50: 79 20 0a 20 20 20 20 20 20 20 20 61 66 66 65 63  y .        affec
0c60: 74 65 64 20 62 79 20 74 68 65 20 6b 69 6e 64 73  ted by the kinds
0c70: 20 6f 66 20 53 51 4c 20 62 65 68 61 76 69 6f 72   of SQL behavior
0c80: 73 20 79 6f 75 20 6d 61 79 20 68 61 76 65 20 74  s you may have t
0c90: 61 6b 65 6e 20 66 6f 72 20 67 72 61 6e 74 65 64  aken for granted
0ca0: 20 69 6e 20 6f 74 68 65 72 20 0a 20 20 20 20 20   in other .     
0cb0: 20 20 20 70 72 6f 76 69 64 65 72 73 2e 20 49 74     providers. It
0cc0: 20 69 73 20 62 79 20 6e 6f 20 6d 65 61 6e 73 20   is by no means 
0cd0: 61 20 63 6f 6d 70 6c 65 74 65 20 6f 70 74 69 6d  a complete optim
0ce0: 69 7a 61 74 69 6f 6e 20 67 75 69 64 65 2e 20 46  ization guide. F
0cf0: 6f 72 20 65 76 65 6e 20 6d 6f 72 65 20 0a 20 20  or even more .  
0d00: 20 20 20 20 20 20 64 65 74 61 69 6c 73 20 6f 6e        details on
0d10: 20 6f 70 74 69 6d 69 7a 69 6e 67 20 79 6f 75 72   optimizing your
0d20: 20 71 75 65 72 69 65 73 2c 20 76 69 73 69 74 20   queries, visit 
0d30: 3c 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f  <a href="http://
0d40: 77 77 77 2e 73 71 6c 69 74 65 2e 6f 72 67 22 3e  www.sqlite.org">
0d50: 73 71 6c 69 74 65 2e 6f 72 67 3c 2f 61 3e 2e 3c  sqlite.org</a>.<
0d60: 2f 70 3e 0a 20 20 20 20 20 20 3c 68 34 20 63 6c  /p>.      <h4 cl
0d70: 61 73 73 3d 22 73 75 62 48 65 61 64 69 6e 67 22  ass="subHeading"
0d80: 3e 54 68 65 20 49 6d 70 6f 72 74 61 6e 63 65 20  >The Importance 
0d90: 6f 66 20 54 72 61 6e 73 61 63 74 69 6f 6e 73 3c  of Transactions<
0da0: 2f 68 34 3e 0a 20 20 20 20 20 20 3c 70 3e 49 66  /h4>.      <p>If
0db0: 20 79 6f 75 20 61 72 65 20 69 6e 73 65 72 74 69   you are inserti
0dc0: 6e 67 20 64 61 74 61 20 69 6e 20 53 51 4c 69 74  ng data in SQLit
0dd0: 65 20 77 69 74 68 6f 75 74 20 66 69 72 73 74 20  e without first 
0de0: 73 74 61 72 74 69 6e 67 20 61 20 74 72 61 6e 73  starting a trans
0df0: 61 63 74 69 6f 6e 3a 20 3c 62 3e 44 4f 20 0a 20  action: <b>DO . 
0e00: 20 20 20 20 20 20 20 20 20 4e 4f 54 20 50 41 53           NOT PAS
0e10: 53 20 47 4f 21 20 43 61 6c 6c 20 42 65 67 69 6e  S GO! Call Begin
0e20: 54 72 61 6e 73 61 63 74 69 6f 6e 28 29 20 72 69  Transaction() ri
0e30: 67 68 74 20 6e 6f 77 2c 20 61 6e 64 20 66 69 6e  ght now, and fin
0e40: 69 73 68 20 77 69 74 68 20 43 6f 6d 6d 69 74 28  ish with Commit(
0e50: 29 21 3c 2f 62 3e 20 0a 20 20 20 20 20 20 20 20  )!</b> .        
0e60: 49 66 20 79 6f 75 20 74 68 69 6e 6b 20 49 27 6d  If you think I'm
0e70: 20 6b 69 64 64 69 6e 67 2c 20 74 68 69 6e 6b 20   kidding, think 
0e80: 61 67 61 69 6e 2e 20 53 51 4c 69 74 65 27 73 20  again. SQLite's 
0e90: 41 2e 43 2e 49 2e 44 2e 20 64 65 73 69 67 6e 20  A.C.I.D. design 
0ea0: 6d 65 61 6e 73 20 74 68 61 74 20 0a 20 20 20 20  means that .    
0eb0: 20 20 20 20 65 76 65 72 79 20 73 69 6e 67 6c 65      every single
0ec0: 20 74 69 6d 65 20 79 6f 75 20 69 6e 73 65 72 74   time you insert
0ed0: 20 61 6e 79 20 64 61 74 61 20 6f 75 74 73 69 64   any data outsid
0ee0: 65 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 2c  e a transaction,
0ef0: 20 61 6e 20 69 6d 70 6c 69 63 69 74 20 0a 20 20   an implicit .  
0f00: 20 20 20 20 20 20 74 72 61 6e 73 61 63 74 69 6f        transactio
0f10: 6e 20 69 73 20 63 6f 6e 73 74 72 75 63 74 65 64  n is constructed
0f20: 2c 20 74 68 65 20 69 6e 73 65 72 74 20 6d 61 64  , the insert mad
0f30: 65 2c 20 61 6e 64 20 74 68 65 20 74 72 61 6e 73  e, and the trans
0f40: 61 63 74 69 6f 6e 20 64 65 73 74 72 75 63 74 65  action destructe
0f50: 64 2e 20 3c 62 3e 45 56 45 52 59 20 0a 20 20 20  d. <b>EVERY .   
0f60: 20 20 20 20 20 20 20 54 49 4d 45 2e 3c 2f 62 3e         TIME.</b>
0f70: 20 49 66 20 79 6f 75 27 72 65 20 77 6f 6e 64 65   If you're wonde
0f80: 72 69 6e 67 20 77 68 79 20 69 6e 20 74 68 65 20  ring why in the 
0f90: 77 6f 72 6c 64 20 79 6f 75 72 20 69 6e 73 65 72  world your inser
0fa0: 74 73 20 61 72 65 20 74 61 6b 69 6e 67 20 31 30  ts are taking 10
0fb0: 30 78 20 0a 20 20 20 20 20 20 20 20 6c 6f 6e 67  0x .        long
0fc0: 65 72 20 74 68 61 6e 20 79 6f 75 20 74 68 69 6e  er than you thin
0fd0: 6b 20 74 68 65 79 20 73 68 6f 75 6c 64 2c 20 6c  k they should, l
0fe0: 6f 6f 6b 20 6e 6f 20 66 75 72 74 68 65 72 2e 3c  ook no further.<
0ff0: 2f 70 3e 0a 20 20 20 20 20 20 3c 68 34 20 63 6c  /p>.      <h4 cl
1000: 61 73 73 3d 22 73 75 62 48 65 61 64 69 6e 67 22  ass="subHeading"
1010: 3e 50 72 65 70 61 72 65 64 20 53 74 61 74 65 6d  >Prepared Statem
1020: 65 6e 74 73 3c 2f 68 34 3e 0a 20 20 20 20 20 20  ents</h4>.      
1030: 3c 70 3e 4c 65 74 73 20 68 61 76 65 20 61 20 71  <p>Lets have a q
1040: 75 69 63 6b 20 6c 6f 6f 6b 20 61 74 20 74 68 65  uick look at the
1050: 20 66 6f 6c 6c 6f 77 69 6e 67 20 63 6f 64 65 20   following code 
1060: 61 6e 64 20 65 76 61 6c 75 61 74 65 20 69 74 73  and evaluate its
1070: 20 70 65 72 66 6f 72 6d 61 6e 63 65 3a 3c 2f 70   performance:</p
1080: 3e 0a 20 20 20 20 20 20 3c 64 69 76 20 63 6c 61  >.      <div cla
1090: 73 73 3d 22 73 79 6e 74 61 78 22 3e 0a 20 20 20  ss="syntax">.   
10a0: 20 20 20 20 20 3c 70 72 65 3e 0a 20 20 20 20 20       <pre>.     
10b0: 20 75 73 69 6e 67 20 28 53 51 4c 69 74 65 43 6f   using (SQLiteCo
10c0: 6d 6d 61 6e 64 20 6d 79 63 6f 6d 6d 61 6e 64 20  mmand mycommand 
10d0: 3d 20 6e 65 77 20 53 51 4c 69 74 65 43 6f 6d 6d  = new SQLiteComm
10e0: 61 6e 64 28 6d 79 63 6f 6e 6e 65 63 74 69 6f 6e  and(myconnection
10f0: 29 29 0a 20 20 20 20 20 20 7b 0a 20 20 20 20 20  )).      {.     
1100: 20 20 20 69 6e 74 20 6e 3b 0a 20 20 20 20 20 20     int n;.      
1110: 20 20 0a 20 20 20 20 20 20 20 20 66 6f 72 20 28    .        for (
1120: 6e 20 3d 20 30 3b 20 6e 20 3c 20 31 30 30 30 30  n = 0; n < 10000
1130: 30 3b 20 6e 20 2b 2b 29 0a 20 20 20 20 20 20 20  0; n ++).       
1140: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 6d 79 63   {.          myc
1150: 6f 6d 6d 61 6e 64 2e 43 6f 6d 6d 61 6e 64 54 65  ommand.CommandTe
1160: 78 74 20 3d 20 53 74 72 69 6e 67 2e 46 6f 72 6d  xt = String.Form
1170: 61 74 28 22 49 4e 53 45 52 54 20 49 4e 54 4f 20  at("INSERT INTO 
1180: 5b 4d 79 54 61 62 6c 65 5d 20 28 5b 4d 79 49 64  [MyTable] ([MyId
1190: 5d 29 20 56 41 4c 55 45 53 28 7b 30 7d 29 22 2c  ]) VALUES({0})",
11a0: 20 6e 20 2b 20 31 29 3b 0a 20 20 20 20 20 20 20   n + 1);.       
11b0: 20 20 20 6d 79 63 6f 6d 6d 61 6e 64 2e 45 78 65     mycommand.Exe
11c0: 63 75 74 65 4e 6f 6e 51 75 65 72 79 28 29 3b 0a  cuteNonQuery();.
11d0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20          }.      
11e0: 7d 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 2f  }</pre>.      </
11f0: 64 69 76 3e 0a 20 20 20 20 20 20 3c 70 3e 54 68  div>.      <p>Th
1200: 69 73 20 63 6f 64 65 20 73 65 65 6d 73 20 70 72  is code seems pr
1210: 65 74 74 79 20 74 69 67 68 74 2c 20 62 75 74 20  etty tight, but 
1220: 69 66 20 79 6f 75 20 74 68 69 6e 6b 20 69 74 20  if you think it 
1230: 70 65 72 66 6f 72 6d 73 20 77 65 6c 6c 2c 20 79  performs well, y
1240: 6f 75 27 72 65 20 64 65 61 64 20 0a 20 20 20 20  ou're dead .    
1250: 20 20 20 20 77 72 6f 6e 67 2e 20 48 65 72 65 27      wrong. Here'
1260: 73 20 77 68 61 74 27 73 20 77 72 6f 6e 67 20 77  s what's wrong w
1270: 69 74 68 20 69 74 3a 3c 2f 70 3e 0a 20 20 20 20  ith it:</p>.    
1280: 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c    <ul>.        <
1290: 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 49 20  li>.          I 
12a0: 64 69 64 6e 27 74 20 73 74 61 72 74 20 61 20 74  didn't start a t
12b0: 72 61 6e 73 61 63 74 69 6f 6e 20 66 69 72 73 74  ransaction first
12c0: 21 20 54 68 69 73 20 69 6e 73 65 72 74 20 69 73  ! This insert is
12d0: 20 64 6f 67 20 73 6c 6f 77 21 3c 2f 6c 69 3e 0a   dog slow!</li>.
12e0: 20 20 20 20 20 20 20 20 3c 6c 69 3e 0a 20 20 20          <li>.   
12f0: 20 20 20 20 20 20 20 54 68 65 20 43 4c 52 20 69         The CLR i
1300: 73 20 63 61 6c 6c 69 6e 67 20 22 6e 65 77 22 20  s calling "new" 
1310: 69 6d 70 6c 69 63 69 74 6c 79 20 31 30 30 2c 30  implicitly 100,0
1320: 30 30 20 74 69 6d 65 73 20 62 65 63 61 75 73 65  00 times because
1330: 20 49 20 61 6d 20 66 6f 72 6d 61 74 74 69 6e 67   I am formatting
1340: 20 61 20 0a 20 20 20 20 20 20 20 20 20 20 73 74   a .          st
1350: 72 69 6e 67 20 69 6e 20 74 68 65 20 6c 6f 6f 70  ring in the loop
1360: 20 66 6f 72 20 65 76 65 72 79 20 69 6e 73 65 72   for every inser
1370: 74 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c  t</li>.        <
1380: 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 53 69  li>.          Si
1390: 6e 63 65 20 53 51 4c 69 74 65 20 70 72 65 63 6f  nce SQLite preco
13a0: 6d 70 69 6c 65 73 20 53 51 4c 20 73 74 61 74 65  mpiles SQL state
13b0: 6d 65 6e 74 73 2c 20 74 68 65 20 65 6e 67 69 6e  ments, the engin
13c0: 65 20 69 73 20 63 6f 6e 73 74 72 75 63 74 69 6e  e is constructin
13d0: 67 20 61 6e 64 20 0a 20 20 20 20 20 20 20 20 20  g and .         
13e0: 20 64 65 63 6f 6e 73 74 72 75 63 74 69 6e 67 20   deconstructing 
13f0: 31 30 30 2c 30 30 30 20 53 51 4c 20 73 74 61 74  100,000 SQL stat
1400: 65 6d 65 6e 74 73 20 61 6e 64 20 61 6c 6c 6f 63  ements and alloc
1410: 61 74 69 6e 67 2f 64 65 61 6c 6c 6f 63 61 74 69  ating/deallocati
1420: 6e 67 20 74 68 65 69 72 20 6d 65 6d 6f 72 79 3c  ng their memory<
1430: 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69  /li>.        <li
1440: 3e 0a 20 20 20 20 20 20 20 20 20 20 41 6c 6c 20  >.          All 
1450: 74 68 69 73 20 63 6f 6e 73 74 72 75 63 74 69 6f  this constructio
1460: 6e 20 61 6e 64 20 64 65 73 74 72 75 63 74 69 6f  n and destructio
1470: 6e 20 69 73 20 69 6e 76 6f 6c 76 69 6e 67 20 61  n is involving a
1480: 62 6f 75 74 20 33 30 30 2c 30 30 30 20 6d 6f 72  bout 300,000 mor
1490: 65 20 6e 61 74 69 76 65 20 74 6f 20 0a 20 20 20  e native to .   
14a0: 20 20 20 20 20 20 20 6d 61 6e 61 67 65 64 20 69         managed i
14b0: 6e 74 65 72 6f 70 20 63 61 6c 6c 73 20 74 68 61  nterop calls tha
14c0: 6e 20 61 6e 20 6f 70 74 69 6d 69 7a 65 64 20 69  n an optimized i
14d0: 6e 73 65 72 74 3c 2f 6c 69 3e 0a 20 20 20 20 20  nsert</li>.     
14e0: 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 70 3e   </ul>.      <p>
14f0: 53 6f 20 6c 65 74 73 20 72 65 77 72 69 74 65 20  So lets rewrite 
1500: 74 68 61 74 20 63 6f 64 65 20 73 6c 69 67 68 74  that code slight
1510: 6c 79 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 64  ly:</p>.      <d
1520: 69 76 20 63 6c 61 73 73 3d 22 73 79 6e 74 61 78  iv class="syntax
1530: 22 3e 0a 20 20 20 20 20 20 20 20 3c 70 72 65 3e  ">.        <pre>
1540: 0a 20 20 20 20 20 20 75 73 69 6e 67 20 28 53 51  .      using (SQ
1550: 4c 69 74 65 54 72 61 6e 73 61 63 74 69 6f 6e 20  LiteTransaction 
1560: 6d 79 74 72 61 6e 73 61 63 74 69 6f 6e 20 3d 20  mytransaction = 
1570: 6d 79 63 6f 6e 6e 65 63 74 69 6f 6e 2e 42 65 67  myconnection.Beg
1580: 69 6e 54 72 61 6e 73 61 63 74 69 6f 6e 28 29 29  inTransaction())
1590: 0a 20 20 20 20 20 20 7b 0a 20 20 20 20 20 20 20  .      {.       
15a0: 20 75 73 69 6e 67 20 28 53 51 4c 69 74 65 43 6f   using (SQLiteCo
15b0: 6d 6d 61 6e 64 20 6d 79 63 6f 6d 6d 61 6e 64 20  mmand mycommand 
15c0: 3d 20 6e 65 77 20 53 51 4c 69 74 65 43 6f 6d 6d  = new SQLiteComm
15d0: 61 6e 64 28 6d 79 63 6f 6e 6e 65 63 74 69 6f 6e  and(myconnection
15e0: 29 29 0a 20 20 20 20 20 20 20 20 7b 0a 20 20 20  )).        {.   
15f0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 50 61 72         SQLitePar
1600: 61 6d 65 74 65 72 20 6d 79 70 61 72 61 6d 20 3d  ameter myparam =
1610: 20 6e 65 77 20 53 51 4c 69 74 65 50 61 72 61 6d   new SQLiteParam
1620: 65 74 65 72 28 29 3b 0a 20 20 20 20 20 20 20 20  eter();.        
1630: 20 20 69 6e 74 20 6e 3b 0a 20 20 20 20 20 20 20    int n;.       
1640: 20 0a 20 20 20 20 20 20 20 20 20 20 6d 79 63 6f   .          myco
1650: 6d 6d 61 6e 64 2e 43 6f 6d 6d 61 6e 64 54 65 78  mmand.CommandTex
1660: 74 20 3d 20 22 49 4e 53 45 52 54 20 49 4e 54 4f  t = "INSERT INTO
1670: 20 5b 4d 79 54 61 62 6c 65 5d 20 28 5b 4d 79 49   [MyTable] ([MyI
1680: 64 5d 29 20 56 41 4c 55 45 53 28 3f 29 22 3b 0a  d]) VALUES(?)";.
1690: 20 20 20 20 20 20 20 20 20 20 6d 79 63 6f 6d 6d            mycomm
16a0: 61 6e 64 2e 50 61 72 61 6d 65 74 65 72 73 2e 41  and.Parameters.A
16b0: 64 64 28 6d 79 70 61 72 61 6d 29 3b 0a 20 20 20  dd(myparam);.   
16c0: 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20         .        
16d0: 20 20 66 6f 72 20 28 6e 20 3d 20 30 3b 20 6e 20    for (n = 0; n 
16e0: 3c 20 31 30 30 30 30 30 3b 20 6e 20 2b 2b 29 0a  < 100000; n ++).
16f0: 20 20 20 20 20 20 20 20 20 20 7b 0a 20 20 20 20            {.    
1700: 20 20 20 20 20 20 20 20 6d 79 70 61 72 61 6d 2e          myparam.
1710: 56 61 6c 75 65 20 3d 20 6e 20 2b 20 31 3b 0a 20  Value = n + 1;. 
1720: 20 20 20 20 20 20 20 20 20 20 20 6d 79 63 6f 6d             mycom
1730: 6d 61 6e 64 2e 45 78 65 63 75 74 65 4e 6f 6e 51  mand.ExecuteNonQ
1740: 75 65 72 79 28 29 3b 0a 20 20 20 20 20 20 20 20  uery();.        
1750: 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20    }.        }.  
1760: 20 20 20 20 20 20 6d 79 74 72 61 6e 73 61 63 74        mytransact
1770: 69 6f 6e 2e 43 6f 6d 6d 69 74 28 29 3b 0a 20 20  ion.Commit();.  
1780: 20 20 20 20 7d 20 3c 2f 70 72 65 3e 0a 20 20 20      } </pre>.   
1790: 20 20 20 3c 2f 64 69 76 3e 0a 20 20 20 20 20 20     </div>.      
17a0: 3c 70 3e 4e 6f 77 20 74 68 69 73 20 69 73 20 61  <p>Now this is a
17b0: 20 62 6c 61 7a 69 6e 67 20 66 61 73 74 20 69 6e   blazing fast in
17c0: 73 65 72 74 20 66 6f 72 20 3c 62 3e 3c 69 3e 61  sert for <b><i>a
17d0: 6e 79 3c 2f 69 3e 3c 2f 62 3e 20 64 61 74 61 62  ny</i></b> datab
17e0: 61 73 65 20 65 6e 67 69 6e 65 2c 20 6e 6f 74 20  ase engine, not 
17f0: 0a 20 20 20 20 20 20 20 20 6a 75 73 74 20 53 51  .        just SQ
1800: 4c 69 74 65 2e 20 54 68 65 20 53 51 4c 20 73 74  Lite. The SQL st
1810: 61 74 65 6d 65 6e 74 20 69 73 20 70 72 65 70 61  atement is prepa
1820: 72 65 64 20 6f 6e 65 20 74 69 6d 65 20 2d 2d 20  red one time -- 
1830: 6f 6e 20 74 68 65 20 66 69 72 73 74 20 63 61 6c  on the first cal
1840: 6c 20 74 6f 20 0a 20 20 20 20 20 20 20 20 45 78  l to .        Ex
1850: 65 63 75 74 65 4e 6f 6e 51 75 65 72 79 28 29 2e  ecuteNonQuery().
1860: 20 4f 6e 63 65 20 70 72 65 70 61 72 65 64 2c 20   Once prepared, 
1870: 69 74 20 6e 65 76 65 72 20 6e 65 65 64 73 20 72  it never needs r
1880: 65 2d 65 76 61 6c 75 61 74 69 6e 67 2e 20 46 75  e-evaluating. Fu
1890: 72 74 68 65 72 6d 6f 72 65 2c 20 0a 20 20 20 20  rthermore, .    
18a0: 20 20 20 20 77 65 27 72 65 20 61 6c 6c 6f 63 61      we're alloca
18b0: 74 69 6e 67 20 6e 6f 20 6d 65 6d 6f 72 79 20 69  ting no memory i
18c0: 6e 20 74 68 65 20 6c 6f 6f 70 20 61 6e 64 20 64  n the loop and d
18d0: 6f 69 6e 67 20 61 20 76 65 72 79 20 6d 69 6e 69  oing a very mini
18e0: 6d 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 0a 20  mal number of . 
18f0: 20 20 20 20 20 20 20 69 6e 74 65 72 6f 70 20 74         interop t
1900: 72 61 6e 73 69 74 69 6f 6e 73 2e 20 53 75 72 72  ransitions. Surr
1910: 6f 75 6e 64 20 74 68 65 20 65 6e 74 69 72 65 20  ound the entire 
1920: 74 68 69 6e 67 20 77 69 74 68 20 61 20 74 72 61  thing with a tra
1930: 6e 73 61 63 74 69 6f 6e 2c 20 61 6e 64 20 74 68  nsaction, and th
1940: 65 20 0a 20 20 20 20 20 20 20 20 70 65 72 66 6f  e .        perfo
1950: 72 6d 61 6e 63 65 20 6f 66 20 74 68 69 73 20 69  rmance of this i
1960: 6e 73 65 72 74 20 69 73 20 73 6f 20 66 61 72 20  nsert is so far 
1970: 61 6e 64 20 61 77 61 79 20 66 61 73 74 65 72 20  and away faster 
1980: 74 68 61 6e 20 74 68 65 20 6f 72 69 67 69 6e 61  than the origina
1990: 6c 20 74 68 61 74 20 69 74 20 0a 20 20 20 20 20  l that it .     
19a0: 20 20 20 6d 65 72 69 74 73 20 61 20 68 61 6e 64     merits a hand
19b0: 73 2d 6f 6e 2d 74 68 65 2d 68 69 70 73 20 70 69  s-on-the-hips pi
19c0: 72 61 74 65 2d 6c 69 6b 65 20 6c 61 75 67 68 2e  rate-like laugh.
19d0: 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 45 76  </p>.      <p>Ev
19e0: 65 72 79 20 64 61 74 61 62 61 73 65 20 65 6e 67  ery database eng
19f0: 69 6e 65 20 77 6f 72 74 68 20 69 74 73 20 73 61  ine worth its sa
1a00: 6c 74 20 75 74 69 6c 69 7a 65 73 20 70 72 65 70  lt utilizes prep
1a10: 61 72 65 64 20 73 74 61 74 65 6d 65 6e 74 73 2e  ared statements.
1a20: 20 49 66 20 79 6f 75 27 72 65 20 0a 20 20 20 20   If you're .    
1a30: 20 20 20 20 6e 6f 74 20 63 6f 64 69 6e 67 20 66      not coding f
1a40: 6f 72 20 74 68 69 73 2c 20 79 6f 75 27 72 65 20  or this, you're 
1a50: 6e 6f 74 20 77 72 69 74 69 6e 67 20 6f 70 74 69  not writing opti
1a60: 6d 69 7a 65 64 20 53 51 4c 2c 20 61 6e 64 20 74  mized SQL, and t
1a70: 68 61 74 27 73 20 74 68 65 20 62 6f 74 74 6f 6d  hat's the bottom
1a80: 20 0a 20 20 20 20 20 20 20 20 6c 69 6e 65 2e 0a   .        line..
1a90: 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20        </p>.     
1aa0: 20 3c 68 72 20 2f 3e 0a 20 20 20 20 20 20 3c 64   <hr />.      <d
1ab0: 69 76 20 69 64 3d 22 66 6f 6f 74 65 72 22 3e 0a  iv id="footer">.
1ac0: 20 20 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20          <p>.    
1ad0: 20 20 20 20 20 20 3c 61 20 68 72 65 66 3d 22 6d        <a href="m
1ae0: 61 69 6c 74 6f 3a 72 6f 62 65 72 74 40 62 6c 61  ailto:robert@bla
1af0: 63 6b 63 61 73 74 6c 65 73 6f 66 74 2e 63 6f 6d  ckcastlesoft.com
1b00: 3f 73 75 62 6a 65 63 74 3d 53 51 4c 69 74 65 2e  ?subject=SQLite.
1b10: 4e 45 54 25 32 30 43 6c 61 73 73 25 32 30 4c 69  NET%20Class%20Li
1b20: 62 72 61 72 79 25 32 30 44 6f 63 75 6d 65 6e 74  brary%20Document
1b30: 61 74 69 6f 6e 25 32 30 46 65 65 64 62 61 63 6b  ation%20Feedback
1b40: 3a 25 32 30 4f 70 74 69 6d 69 7a 69 6e 67 22 3e  :%20Optimizing">
1b50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 65 6e  .            Sen
1b60: 64 20 63 6f 6d 6d 65 6e 74 73 20 6f 6e 20 74 68  d comments on th
1b70: 69 73 20 74 6f 70 69 63 2e 3c 2f 61 3e 0a 20 20  is topic.</a>.  
1b80: 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20        </p>.     
1b90: 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 20 20 3c     <p>.        <
1ba0: 2f 70 3e 0a 20 20 20 20 20 20 3c 2f 64 69 76 3e  /p>.      </div>
1bb0: 0a 20 20 20 20 3c 2f 64 69 76 3e 0a 20 20 20 20  .    </div>.    
1bc0: 3c 2f 64 69 76 3e 0a 20 20 3c 2f 62 6f 64 79 3e  </div>.  </body>
1bd0: 0a 3c 2f 68 74 6d 6c 3e 0a                       .</html>.