SQL or QBE are applied to criteria being applied to a large number of
nodes, stored in the relational datastore, Paradox or SQL
XPath expression are applied to filter the result sets returned to Paradox
by the queries, typically within scan loops over a TCursor
attached to the query results.
How to speed up equal/not equal selections:
hash the document or subtree stored as a BLOB, to a separate column,
at the storage stage, then when querying compare hash results, referably
indexed, then double check the absence of collisions by comparing the
data being searched with just the data returned by this first test,
An existing MD5 DLL (Delphi) allows
for a fast MD5 hash from Paradox
This process saves:
bandwidth and computing time on native networked Paradox/dBase databases
server load on SQL database servers
Index selectivity over the hash column is critical for good performance,
since all matching BLOBs have to be compared to avoid hash collisions.
A MD5 condensate typically produces perfect results: only identical documents
usually result in the same MD5 hash.