title: Delphi, PGDac vs Zeos, Fetch, Lookup?
body: <p>I used Zeos to test to know: is ZTable uses fetch technics, or not?</p>
  
  <p>May in the future we migrate our lesser system to PGSQL, and this used now "Table" components (as BDE, but it have an SQL-like server).</p>
  
  <p>These tables use real cursors, a "Window" with N record, so lookup is very fast, because the Locate/Lookup is started on server, and only these N records are refreshed, no matter, how many records in the lookup table.</p>
  
  <p>PGSQL uses fetch technics as I know, and I tested it with a table (id int, name varchar(100)), and 1 million records. (I also trying this with mysql). The adapter is Zeos.</p>
  
  <p>ID, sec to find, allocated memory in bytes on client.</p>
  
  <pre><code>MySQL
  500000  2,761   113 196 344
  1000000 3,214   225 471 232
  313800  0,437   225 471 232
  328066  0,468   225 471 232
  276374  0,390   225 471 232
  905984  1,264   225 471 232
  260253  0,359   225 471 232
  
  PGSQL
  500000  3,042   113 188 184
  1000000 3,744   225 463 064
  313800  0,436   225 463 064
  328066  0,452   225 463 064
  276374  0,375   225 463 064
  905984  1,295   225 463 064
  260253  0,359   225 463 064
  142023  0,203   225 463 064
  </code></pre>
  
  <p>As you see the records are fetched locally, this cause the 225 MB usage, and searches are slow a little, based where is the record we must find.</p>
  
  <p>I want to ask more things:</p>
  
  <p>a.)
  Is PGDAC have some technics to we can use the lookups without pay the fetch with memory and secs?</p>
  
  <p>b.)
  Or is PG ODBC driver can help in this problem with ADO? (As I know ADO can use server side cursors)?</p>
  
  <p>c.)
  Have anybody some experience with lookup tables, and performance? Is this critical question or it is not?
  (With client memory usage too).</p>
  
  <p>d.)
  If no chance to avoid fetch hell with lookups, what we can do?
  Server Side Joins, and unique code for Lookup field changing without real Lookup?</p>
  
  <p>Thanks for your help:
     dd</p>