[thelist] Very Large MySQL Table
Stephen Rider
evolt_org at striderweb.com
Mon Feb 23 12:48:47 CST 2009
Off the top of my head -- SQL gurus feel free to point and laugh.
You could also index it with a simple 26-digit number -- each digit is
the number of times a particular letter appears (up to 9, anyway).
Then it's a single index. To check for the frequency of "e", look at
the 5th digit... and so forth.
Or go binary -- 0s or 1s simply indicate "contains this letter" or not.
Then you could have a separate index of the alphabet based on
frequency within the English language, and based on that, search the
*least* common letters first. If searching for the string "quaker",
it would look for "q" first -- not because it's the first in the
string, but because it's the least common letter. if it's not present
move on to the second least-common.
This allows you to eliminate candidates without grepping the whole
string -- you're just pulling particular digits (by position) out of
the index number.
Stephen
On Feb 10, 2009, at 8:42 AM, Luther, Ron wrote:
> Jason Handby asked:
>
>> sadly, mysql can use only one index for each table in a query
>
>>> Hmmm that sucks... Ah well. Anyone else have any ideas? I'm
>>> intrigued.
>
>
> If you index the 'big' table numerically ... just a counter on each
> record? Then you can implement your idea by constructing 26 side
> tables. The "A" table would contain the index reference number for
> entries that start with the letter 'A', etc.
More information about the thelist
mailing list