...and a last word on the performance of indexes:
If, as you say, you'd do thi
>create cursor Customer (Name c(80))
>index on Name
>with this thousands of customers, cdx file grows. Smaller file size indexes perform good. So..
For Indexes to SEEK a certain customer by name the normal index will be totally sufficient, don't fear a too large CDX. If you really think a checksum index is performing better: You have to create the checksum of the name you want to find (padded to field width) and then seek/locate/rushmore optimize on the checksum index. It'll not perform significantly faster, I'd stand the test of this, I think, but you may prove me wrong, simply create sample data and see for yourself. You only burden yourself with an index, which you eg can't use to sort by the name column, so that index on Sys(2007,name,0,1) is less valuable alone in that aspect, than a simple index on the name column.
If you really think field sizes influence index searches so much, optimize the column widths with real name data. 80 char length is very large for person names, unless perhaps for arabic names.
For an insight of what SYS(2007,string,0,1) does, it's doing CRC32 with string and CRC32 is well documented as
you'll see it's not good for your purpose. I suggest you rather test with MD5 and compute that as a 16 byte binary Q(18) value. No need to have such a field, the index expression resulting in such a Q(16) vartype will create a corresponding index structure.
Last not least it's a viable idea for the shortening of index leaf nodes. If you want unique results, you'd rather index on a compression of the name, though, not a checksum or hash. Compression has the disadvantage of being variable length and won't work good for that matter.
Bye, Olaf.