Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
admin:optimization:plans:example [2012/02/02 17:07]
doc
admin:optimization:plans:example [2016/06/28 22:38] (current)
Line 3: Line 3:
 {{page>:​top_add&​nofooter&​noeditbtn}} {{page>:​top_add&​nofooter&​noeditbtn}}
  
-====== Administration ======+====== Administration: Optimizing Queries ​======
  
-===== Optimizing Queries ​=====+===== Query Plans =====
  
  
-**[[admin:​optimization:​plans:​home|Overview]]** |+[[admin:​optimization:​plans:​home|Overview]] |
 [[admin:​optimization:​plans:​reference|Anatomy of a Query Plan]] | [[admin:​optimization:​plans:​reference|Anatomy of a Query Plan]] |
-[[admin:​optimization:​plans:​example|Reading a Query Plan]] |+**[[admin:​optimization:​plans:​example|Reading a Query Plan]]** |
 [[admin:​optimization:​plans:​configuration|Configuring Query Plans]] | [[admin:​optimization:​plans:​configuration|Configuring Query Plans]] |
 [[admin:​optimization:​plans:​optimization|Optimizing Queries]] [[admin:​optimization:​plans:​optimization|Optimizing Queries]]
Line 19: Line 19:
 ==== Reading a Query Plan ==== ==== Reading a Query Plan ====
  
-The following is a rather straightforward query that joins two tables together --- Individuals and their respective Households --- and aggregates counts of all people born since 1980 that are either in Denver, CO or in Phoenix, AZ.  The result is a display of counts by Gender. ​ Let's take a look at how Omnidex optimizes this query.  ​+The following is a rather straightforward query that joins two tables together --- Individuals and their respective Households --- and aggregates counts of all people born since 1980 that are either in Denver, CO or in Phoenix, AZ.  The result is a display of counts by Gender. ​ Let's take a look at the query plan to understand ​how Omnidex optimizes this query.  ​
  
 <​html>​ <​html>​
Line 26: Line 26:
     <td valign="​top">​     <td valign="​top">​
       <font face="'​Courier New'">​       <font face="'​Courier New'">​
-&​nbsp; ​                                                ​Select &nbsp; &​nbsp; ​       I.GENDER, count(*) ​                <​br /> +&​nbsp; ​                                                ​Select ​&​nbsp; ​&​nbsp;&​nbsp; ​       I.GENDER, count(*) ​                <​br /> 
-&nbsp; &​nbsp; ​                                          ​from ​ &nbsp; &​nbsp; ​       HOUSEHOLDS H                       <​br /> +&nbsp; &​nbsp; ​                                          ​from  ​&​nbsp; ​&​nbsp;&​nbsp; ​       HOUSEHOLDS H                       <​br /> 
-&nbsp; &​nbsp; ​                                          ​join ​ &nbsp; &​nbsp; ​       INDIVIDUALS I                      <br /> +&nbsp; &​nbsp; ​                                          ​join  ​&​nbsp; ​&​nbsp;&​nbsp; ​       INDIVIDUALS I                      <br /> 
-&nbsp; &​nbsp; ​                                          ​on ​   &nbsp; &nbsp; &nbsp; H.HOUSEHOLD = I.HOUSEHOLD ​         <br /> +&nbsp; &​nbsp; ​                                          ​on ​   ​&​nbsp; ​&nbsp; &​nbsp;&​nbsp;​ H.HOUSEHOLD = I.HOUSEHOLD ​         <br /> 
-&nbsp; &​nbsp; ​                                          where &​nbsp;&​nbsp; ​        ​((H.STATE = '​CO'​ and               <​br /> +&nbsp; &​nbsp; ​                                          ​where ​&nbsp;&​nbsp;&​nbsp; ​        ​((H.STATE = '​CO'​ and               <​br /> 
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp;&​nbsp; ​                              ​H.CITY = '​Denver'​) or            <br /> +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp; ​                                   H.CITY = '​Denver'​) or            <br /> 
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp; ​                                   (H.STATE = '​AZ'​ and               <​br /> +&​nbsp; ​&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp;&​nbsp; ​                                   (H.STATE = '​AZ'​ and               <​br /> 
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp;&​nbsp; ​                              ​H.CITY = '​Phoenix'​)) and         <​br /> +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp; ​                                   H.CITY = '​Phoenix'​)) and         <​br /> 
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp;&​nbsp; ​                                   I.BIRTHDATE &gt; '​January 1, 1980' <br /> +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp; ​                                        ​I.BIRTHDATE &gt; '​January 1, 1980' <br /> 
-&nbsp; &​nbsp; ​                                          group by                   ​I.GENDER&​nbsp;​+&nbsp; &​nbsp; ​                                          group by&​nbsp; ​                  I.GENDER&​nbsp;​
       </​font>​       </​font>​
     </td>     </td>
Line 58: Line 58:
     <td valign="​top"​ width="​50%">​     <td valign="​top"​ width="​50%">​
       <font face="'​Courier New'">​       <font face="'​Courier New'">​
-&​nbsp; ​                                                ​Select &nbsp; &​nbsp; ​       <font color=red>​I.GENDER,​ count(*) </​font><​br /> +&​nbsp; ​                                                ​Select ​&​nbsp; ​&​nbsp;&​nbsp; ​       <font color=red>​I.GENDER,​ count(*) </​font><​br /> 
-&nbsp; &​nbsp; ​                                         <font color=red>​ from  &nbsp; &​nbsp; ​       HOUSEHOLDS H       <​br /> +&nbsp; &​nbsp; ​                                         <font color=red>​ from  ​&​nbsp; ​&​nbsp;&​nbsp; ​       HOUSEHOLDS H       <​br /> 
-&nbsp; &​nbsp; ​                                          ​join ​ &nbsp; &​nbsp; ​       INDIVIDUALS I                      <br /> +&nbsp; &​nbsp; ​                                          ​join  ​&​nbsp; ​&​nbsp;&​nbsp; ​       INDIVIDUALS I                      <br /> 
-&nbsp; &​nbsp; ​                                          ​on ​   &nbsp; &nbsp; &nbsp; H.HOUSEHOLD = I.HOUSEHOLD ​         </​font><​br /> +&nbsp; &​nbsp; ​                                          ​on ​   ​&​nbsp; ​&nbsp; &​nbsp;&​nbsp;​ H.HOUSEHOLD = I.HOUSEHOLD ​         </​font><​br /> 
-&nbsp; &​nbsp; ​                                          where &​nbsp;&​nbsp; ​        ​((H.STATE = '​CO'​ and               <​br /> +&nbsp; &​nbsp; ​                                          where &nbsp; &​nbsp; ​             ((H.STATE = '​CO'​ and               <​br /> 
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp;&​nbsp; ​                              ​H.CITY = '​Denver'​) or            <br /> +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp; ​                                   H.CITY = '​Denver'​) or            <br /> 
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp; ​                                   (H.STATE = '​AZ'​ and               <​br /> +&​nbsp; ​&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp;&​nbsp; ​                                   (H.STATE = '​AZ'​ and               <​br /> 
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp;&​nbsp; ​                              ​H.CITY = '​Phoenix'​)) and         <​br /> +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp; ​                                   H.CITY = '​Phoenix'​)) and         <​br /> 
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp;&​nbsp; ​                                   I.BIRTHDATE &gt; '​January 1, 1980' <br /> +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp; ​                                        ​I.BIRTHDATE &gt; '​January 1, 1980' <br /> 
-&nbsp; &​nbsp; ​                                          <​font color=red>​group by   ​I.GENDER&​nbsp;</​font><​br />+&nbsp; &​nbsp; ​                                          <​font color=red>​group by&​nbsp; ​  I.GENDER&​nbsp;</​font><​br />
                                                                                   </br>                                                                                   </br>
       </​font>​       </​font>​
Line 124: Line 124:
 === Step 2: Process the HOUSEHOLDS table'​s criteria === === Step 2: Process the HOUSEHOLDS table'​s criteria ===
  
-Omnidex will perform index qualifications to process the criteria in the HOUSEHOLDS table, paying attention to Boolean operators and parentheses to insure the correct result. ​ Once this is done, Omnidex will have isolated the rows that meet this criteria, identified by a temporary file containing index pointers.+Omnidex will perform index qualifications to process the criteria in the HOUSEHOLDS table, paying attention to Boolean operators and parentheses to insure the correct result. ​ Once this is done, Omnidex will have isolated ​index pointers for the rows that meet this criteria.
  
 <​html>​ <​html>​
Line 138: Line 138:
     <td valign="​top"​ width="​50%">​     <td valign="​top"​ width="​50%">​
       <font face="'​Courier New'">​       <font face="'​Courier New'">​
-&​nbsp; ​                                                ​Select &nbsp; &​nbsp; ​       I.GENDER, count(*) ​                <​br /> +&​nbsp; ​                                                ​Select ​&​nbsp; ​&​nbsp;&​nbsp; ​       I.GENDER, count(*) ​                <​br /> 
-&nbsp; &​nbsp; ​                                          ​from ​ &nbsp; &​nbsp; ​       HOUSEHOLDS H                       <​br /> +&nbsp; &​nbsp; ​                                          ​from  ​&​nbsp; ​&​nbsp;&​nbsp; ​       HOUSEHOLDS H                       <​br /> 
-&nbsp; &​nbsp; ​                                          ​join ​ &nbsp; &​nbsp; ​       INDIVIDUALS I                      <br /> +&nbsp; &​nbsp; ​                                          ​join  ​&​nbsp; ​&​nbsp;&​nbsp; ​       INDIVIDUALS I                      <br /> 
-&nbsp; &​nbsp; ​                                          ​on ​   &nbsp; &nbsp; &nbsp; H.HOUSEHOLD = I.HOUSEHOLD ​         <br /> +&nbsp; &​nbsp; ​                                          ​on ​   ​&​nbsp; ​&nbsp; &​nbsp;&​nbsp;​ H.HOUSEHOLD = I.HOUSEHOLD ​         <br /> 
-&nbsp; &​nbsp; ​                                          where &​nbsp;&​nbsp; ​        ​<font color=red>​((H.STATE = '​CO'​ and               ​<br /> +&nbsp; &​nbsp; ​                                          where &nbsp; &​nbsp; ​             <font color=red>​((H.STATE = '​CO'​ and <br /> 
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp;&​nbsp; ​                              ​H.CITY = '​Denver'​) or            <br /> +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp; ​                                   H.CITY = '​Denver'​) or            <br /> 
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp; ​                                   (H.STATE = '​AZ'​ and               <​br /> +&​nbsp; ​&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp;&​nbsp; ​                                   (H.STATE = '​AZ'​ and               <​br /> 
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp;&​nbsp; ​                              ​H.CITY = '​Phoenix'​))</​font>​ and         ​<br /> +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp; ​                                   H.CITY = '​Phoenix'​))</​font>​ and  <br /> 
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp;&​nbsp; ​                                   I.BIRTHDATE &gt; '​January 1, 1980' <br /> +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp; ​                                        ​I.BIRTHDATE &gt; '​January 1, 1980' <br /> 
-&​nbsp; ​                                                ​group by &​nbsp; ​            ​I.GENDER&​nbsp;<​br />+&​nbsp; ​&​nbsp; ​                                          group by&​nbsp; ​                  ​I.GENDER&​nbsp;<​br />
                                                                                   </br>                                                                                   </br>
 +
       </​font>​       </​font>​
     </td>     </td>
Line 206: Line 207:
 === Step 3: Join from HOUSEHOLDS to INDIVIDUALS === === Step 3: Join from HOUSEHOLDS to INDIVIDUALS ===
  
-Omnidex will join from the HOUSEHOLDS table to the INDIVIDUALS table. ​ Omnidex has several techniques for optimizing table joins. ​ In this case, it will use the primary key values in HOUSEHOLDS as criteria against thed HOUSEHOLD index in the INDIVIDUALS table.  ​Once this is done, Omnidex will have isolated rows in the INDIVIDUALS table that meet the criteria from the HOUSEHOLDS ​table.+Omnidex will join from the HOUSEHOLDS table to the INDIVIDUALS table. ​ Omnidex has several techniques for optimizing table joins. ​ In this case, it will use the primary key values in HOUSEHOLDS as criteria against thed HOUSEHOLD index in the INDIVIDUALS table. ​ Omnidex will then have isolated ​index pointers for rows in the INDIVIDUALS table that link to the previously qualified ​HOUSEHOLDS ​rows.
  
 <​html>​ <​html>​
Line 220: Line 221:
     <td valign="​top"​ width="​50%">​     <td valign="​top"​ width="​50%">​
       <font face="'​Courier New'">​       <font face="'​Courier New'">​
-&​nbsp; ​                                                ​Select &nbsp; &​nbsp; ​       I.GENDER, count(*) ​                <​br /> +&​nbsp; ​                                                ​Select ​&​nbsp; ​&​nbsp;&​nbsp; ​       I.GENDER, count(*) ​                <​br /> 
-&nbsp; &​nbsp; ​                                          <​font color=red>​from ​ &nbsp; &​nbsp; ​       HOUSEHOLDS H       <​br /> +&nbsp; &​nbsp; ​                                          <​font color=red>​from  ​&​nbsp; ​&​nbsp;&​nbsp; ​       HOUSEHOLDS H       <​br /> 
-&nbsp; &​nbsp; ​                                          ​join ​ &nbsp; &​nbsp; ​       INDIVIDUALS I                      <br /> +&nbsp; &​nbsp; ​                                          ​join  ​&​nbsp; ​&​nbsp;&​nbsp; ​       INDIVIDUALS I                      <br /> 
-&nbsp; &​nbsp; ​                                          ​on ​   &nbsp; &nbsp; &nbsp; H.HOUSEHOLD = I.HOUSEHOLD </​font> ​ <br /> +&nbsp; &​nbsp; ​                                          ​on ​   ​&​nbsp; ​&nbsp; &​nbsp;&​nbsp;​ H.HOUSEHOLD = I.HOUSEHOLD </​font> ​ <br /> 
-&nbsp; &​nbsp; ​                                          where &​nbsp;&​nbsp; ​        ​((H.STATE = '​CO'​ and               <​br /> +&nbsp; &​nbsp; ​                                          where &nbsp; &​nbsp; ​             ((H.STATE = '​CO'​ and               <​br /> 
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp;&​nbsp; ​                              ​H.CITY = '​Denver'​) or            <br /> +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp; ​                                   H.CITY = '​Denver'​) or            <br /> 
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp; ​                                   (H.STATE = '​AZ'​ and               <​br /> +&​nbsp; ​&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp;&​nbsp; ​                                   (H.STATE = '​AZ'​ and               <​br /> 
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp;&​nbsp; ​                              ​H.CITY = '​Phoenix'​)) and         <​br /> +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp; ​                                   H.CITY = '​Phoenix'​)) and         <​br /> 
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp;&​nbsp; ​                                   I.BIRTHDATE &gt; '​January 1, 1980' <br /> +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp; ​                                        ​I.BIRTHDATE &gt; '​January 1, 1980' <br /> 
-&​nbsp; ​                                                ​group by &​nbsp; ​            ​I.GENDER&​nbsp;<​br /> +&​nbsp; ​&​nbsp; ​                                          group by&​nbsp; ​                  ​I.GENDER&​nbsp;<​br /> 
-                                                                           ​</br>+                                                                                  </br> 
       </​font>​       </​font>​
     </td>     </td>
Line 288: Line 290:
 === Step 4: Process the INDIVIDUALS table'​s criteria === === Step 4: Process the INDIVIDUALS table'​s criteria ===
  
-Omnidex will perform index qualifications to process the criteria in the INDIVIDUALS table. ​ This will further refine the index pointers ​already identified by processing in the HOUSEHOLDS ​table.+Omnidex will perform index qualifications to process the criteria in the INDIVIDUALS table. ​ This will further refine the index pointers ​so that they reflect criteria from both tables, as well as the table join itself.
  
 <​html>​ <​html>​
Line 302: Line 304:
     <td valign="​top"​ width="​50%">​     <td valign="​top"​ width="​50%">​
       <font face="'​Courier New'">​       <font face="'​Courier New'">​
-&​nbsp; ​                                                ​Select &nbsp; &​nbsp; ​       I.GENDER, count(*) ​                <​br /> +&​nbsp; ​                                                ​Select ​&​nbsp; ​&​nbsp;&​nbsp; ​       I.GENDER, count(*) ​                <​br /> 
-&nbsp; &​nbsp; ​                                          ​from ​ &nbsp; &​nbsp; ​       HOUSEHOLDS H                       <​br /> +&nbsp; &​nbsp; ​                                          ​from  ​&​nbsp; ​&​nbsp;&​nbsp; ​       HOUSEHOLDS H                       <​br /> 
-&nbsp; &​nbsp; ​                                          ​join ​ &nbsp; &​nbsp; ​       INDIVIDUALS I                      <br /> +&nbsp; &​nbsp; ​                                          ​join  ​&​nbsp; ​&​nbsp;&​nbsp; ​       INDIVIDUALS I                      <br /> 
-&nbsp; &​nbsp; ​                                          ​on ​   &nbsp; &nbsp; &nbsp; H.HOUSEHOLD = I.HOUSEHOLD ​         <br /> +&nbsp; &​nbsp; ​                                          ​on ​   ​&​nbsp; ​&nbsp; &​nbsp;&​nbsp;​ H.HOUSEHOLD = I.HOUSEHOLD ​         <br /> 
-&nbsp; &​nbsp; ​                                          where &​nbsp;&​nbsp; ​        ​((H.STATE = '​CO'​ and               <​br /> +&nbsp; &​nbsp; ​                                          where &nbsp; &​nbsp; ​             ((H.STATE = '​CO'​ and               <​br /> 
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp;&​nbsp; ​                              ​H.CITY = '​Denver'​) or            <br /> +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp; ​                                   H.CITY = '​Denver'​) or            <br /> 
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp; ​                                   (H.STATE = '​AZ'​ and               <​br /> +&​nbsp; ​&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp;&​nbsp; ​                                   (H.STATE = '​AZ'​ and               <​br /> 
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp;&​nbsp; ​                              ​H.CITY = '​Phoenix'​)) and         <​br /> +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp; ​                                   H.CITY = '​Phoenix'​)) and         <​br /> 
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp;&​nbsp; ​                                   <font color=red>​I.BIRTHDATE &gt; '​January 1, 1980'</​font>​ <br /> +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp; ​                                        ​<font color=red>​I.BIRTHDATE &gt; '​January 1, 1980' </​font><​br /> 
-&​nbsp; ​                                                ​group by &​nbsp; ​            ​I.GENDER&​nbsp;<​br /> +&​nbsp; ​&​nbsp; ​                                          group by&​nbsp; ​                  ​I.GENDER&​nbsp;<​br /> 
-                                                                           ​</br>+                                                                                  </br> 
       </​font>​       </​font>​
     </td>     </td>
Line 367: Line 370:
 === Step 5: Aggregate counts in the INDIVIDUALS table=== === Step 5: Aggregate counts in the INDIVIDUALS table===
  
-Omnidex will aggregate counts in the INDIVIDUALS table by scanning its indexes ​and filering ​the results using the index pointers ​set aside from the previous steps +Omnidex will aggregate counts in the INDIVIDUALS table using indexes ​on the GROUP BY columns, while also intersecting with the index pointers ​that were isolated while processing criteria and table joins.
  
 <​html>​ <​html>​
Line 381: Line 384:
     <td valign="​top"​ width="​50%">​     <td valign="​top"​ width="​50%">​
       <font face="'​Courier New'">​       <font face="'​Courier New'">​
-&​nbsp; ​                                                ​Select &nbsp; &​nbsp; ​       <font color=red>​I.GENDER,​ count(*) </​font><​br /> +&​nbsp; ​                                                ​Select ​&​nbsp; ​&​nbsp;&​nbsp; ​       <font color=red>​I.GENDER,​ count(*) </​font><​br /> 
-&nbsp; &​nbsp; ​                                          ​from ​ &nbsp; &​nbsp; ​       HOUSEHOLDS H                       <​br /> +&nbsp; &​nbsp; ​                                          ​from  ​&​nbsp; ​&​nbsp;&​nbsp; ​       HOUSEHOLDS H                       <​br /> 
-&nbsp; &​nbsp; ​                                          ​join ​ &nbsp; &​nbsp; ​       INDIVIDUALS I                      <br /> +&nbsp; &​nbsp; ​                                          ​join  ​&​nbsp; ​&​nbsp;&​nbsp; ​       INDIVIDUALS I                      <br /> 
-&nbsp; &​nbsp; ​                                          ​on ​   &nbsp; &nbsp; &nbsp; H.HOUSEHOLD = I.HOUSEHOLD ​         <br /> +&nbsp; &​nbsp; ​                                          ​on ​   ​&​nbsp; ​&nbsp; &​nbsp;&​nbsp;​ H.HOUSEHOLD = I.HOUSEHOLD ​         <br /> 
-&nbsp; &​nbsp; ​                                          where &​nbsp;&​nbsp; ​        ​((H.STATE = '​CO'​ and               <​br /> +&nbsp; &​nbsp; ​                                          where &nbsp; &​nbsp; ​             ((H.STATE = '​CO'​ and               <​br /> 
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp;&​nbsp; ​                              ​H.CITY = '​Denver'​) or            <br /> +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp; ​                                   H.CITY = '​Denver'​) or            <br /> 
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp; ​                                   (H.STATE = '​AZ'​ and               <​br /> +&​nbsp; ​&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp;&​nbsp; ​                                   (H.STATE = '​AZ'​ and               <​br /> 
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp;&​nbsp; ​                              ​H.CITY = '​Phoenix'​)) and         <​br /> +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp; ​                                   H.CITY = '​Phoenix'​)) and         <​br /> 
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp;&​nbsp; ​                                   I.BIRTHDATE &gt; '​January 1, 1980' <br /> +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp; ​                                        ​I.BIRTHDATE &gt; '​January 1, 1980' <br /> 
-&​nbsp; ​                                                ​<font color=red>​group by &​nbsp; ​            ​I.GENDER&​nbsp;</​font>​ +&​nbsp; ​&​nbsp; ​                                          <font color=red>​group by&​nbsp; ​                  ​I.GENDER&​nbsp;</​font><br /
-                                                                    </br>+                                                                                  </br>
       </​font>​       </​font>​
     </td>     </td>
Line 446: Line 449:
 === Step 6: Return the final result set === === Step 6: Return the final result set ===
  
-Omnidex will finally return the result set of the query. ​ When possible, Omnidex will return the first rows as soon as they are available, even if the later rows are still being processed. ​ This speeds query execution, and also helps when only the first screenfuls of data are going to be requested.+Omnidex will finally return the result set of the query. ​ When possible, Omnidex will return the first rows as soon as they are available, even if the later rows are still being processed. ​ This speeds query execution, and also helps when only the first screenfuls of data are going to be viewed.
  
 <​html>​ <​html>​
Line 460: Line 463:
     <td valign="​top"​ width="​50%">​     <td valign="​top"​ width="​50%">​
       <font face="'​Courier New'">​       <font face="'​Courier New'">​
-&​nbsp; ​                                                ​Select &nbsp; &​nbsp; ​       I.GENDER, count(*) ​                ​<br /> +&​nbsp; ​                                                ​Select ​&​nbsp; ​&​nbsp;&​nbsp; ​       ​<font color=red>​I.GENDER, count(*) ​</​font>​<br /> 
-&nbsp; &​nbsp; ​                                          ​from ​ &nbsp; &​nbsp; ​       HOUSEHOLDS H                       <​br /> +&nbsp; &​nbsp; ​                                          ​from  ​&​nbsp; ​&​nbsp;&​nbsp; ​       HOUSEHOLDS H                       <​br /> 
-&nbsp; &​nbsp; ​                                          ​join ​ &nbsp; &​nbsp; ​       INDIVIDUALS I                      <br /> +&nbsp; &​nbsp; ​                                          ​join  ​&​nbsp; ​&​nbsp;&​nbsp; ​       INDIVIDUALS I                      <br /> 
-&nbsp; &​nbsp; ​                                          ​on ​   &nbsp; &nbsp; &nbsp; H.HOUSEHOLD = I.HOUSEHOLD ​         <br /> +&nbsp; &​nbsp; ​                                          ​on ​   ​&​nbsp; ​&nbsp; &​nbsp;&​nbsp;​ H.HOUSEHOLD = I.HOUSEHOLD ​         <br /> 
-&nbsp; &​nbsp; ​                                          where &​nbsp;&​nbsp; ​        ​((H.STATE = '​CO'​ and               <​br /> +&nbsp; &​nbsp; ​                                          where &nbsp; &​nbsp; ​             ((H.STATE = '​CO'​ and               <​br /> 
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp;&​nbsp; ​                              ​H.CITY = '​Denver'​) or            <br /> +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp; ​                                   H.CITY = '​Denver'​) or            <br /> 
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp; ​                                   (H.STATE = '​AZ'​ and               <​br /> +&​nbsp; ​&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp;&​nbsp; ​                                   (H.STATE = '​AZ'​ and               <​br /> 
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp;&​nbsp; ​                              ​H.CITY = '​Phoenix'​)) and         <​br /> +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp; ​                                   H.CITY = '​Phoenix'​)) and         <​br /> 
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp;&​nbsp; ​                                   I.BIRTHDATE &gt; '​January 1, 1980' <br /> +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &​nbsp; ​                                        ​I.BIRTHDATE &gt; '​January 1, 1980' <br /> 
-&​nbsp; ​                                                ​group by &​nbsp; ​            <font color=red>​I.GENDER</​font>​&​nbsp;<​br /> +&​nbsp; ​&​nbsp; ​                                          group by&​nbsp; ​                  ​I.GENDER&​nbsp;<​br /> 
-                                                                    </br>+                                                                                  </br>
       </​font>​       </​font>​
     </td>     </td>
     <td valign="​top">​     <td valign="​top">​
       <font color=red>​       <font color=red>​
 +<​--<​br />
    <​br />    <​br />
    <​br />    <​br />
Line 483: Line 487:
    <​br />    <​br />
    <​br />    <​br />
-   <​br /> 
-<-- 
       </​font>​       </​font>​
     </td>     </td>
     <td valign="​top">​     <td valign="​top">​
       <font color=red>​       <font color=red>​
 +Omnidex will return the result set.        <br />
                                            <​br />                                            <​br />
                                            <​br />                                            <​br />
Line 497: Line 500:
                                            <​br />                                            <​br />
                                            <​br />                                            <​br />
-                                           <​br /> 
-Omnidex will return the result set.        ​ 
       </​font>​       </​font>​
     </td>     </td>
Line 534: Line 535:
 ====== Additional Resources ====== ====== Additional Resources ======
 See also: See also:
-{{page>:​admin:​indexing:​see_also&​nofooter&​noeditbtn}}+{{page>:​admin:​optimization:​see_also&​nofooter&​noeditbtn}}
  
 {{page>:​bottom_add&​nofooter&​noeditbtn}} {{page>:​bottom_add&​nofooter&​noeditbtn}}
 
Back to top
admin/optimization/plans/example.1328202470.txt.gz · Last modified: 2016/06/28 22:38 (external edit)