Chris,

We run a large data warehouse with tables similar to yours. We basically gave up on 
indexing and the overhead involved and just tablescan. The key is to partition the 
data using a concept called Merge Tables. However, since we currently use Oracle, 
eager to migrate to MySQL - I don't have concrete MySQL stats on this concept. 

Theoretically speaking - here's the anticipated math if you were to try and set this 
up on MySQL Merge Tables (I made some assumptions about your table).

120,000,000 rows * 400 fields * 5 bytes/field average = 250 GB. Using our server as an 
example - we read at 800 MB/s so worse case you can read the entire table in 5 
minutes. However, if you partition your data by ZIP (which appears in all but 1 of 
your queries) you would only read those relevant slices, vastly reducing your run 
time. The one query which doesn't have zip has STATE so you can have a ZIP/STATE 
conversion table that generates a list of zips in leu of state and modify the query to 
use it - and again enjoy the benefits of partitioning.

If most of your queries use zip and most of them go after a small slice of the table 
you will probably be under 1 minute response time most of the time. Worse case would 
be 5 minutes. No indexes to maintain on insert, or rebuild from scratch.

Udi


-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to