Optimal design for 90mm row clickstream MySQL Question
Which optimizations should I employ to make this DB manageable?  I've read a lot of posts about optimizing big dbs, but I'm pretty new so it's difficult to determine which techniques are suitable for my setup.
DB Info
I loaded about 90 mil rows from flatfile csvs into a mysql database (aws RDS, if that matters).  There are 60 columns and each row is a click on a website.
Datatypes: All datatypes are text because of limitations with the mysqlimport utility (specifically, its treatment of null vs. 0 values in numerical fields, which i could be wrong about)
Each column falls into one of these categories:

Visit info: time, referrer, etc. Many pages log millions of visits (front page, for ex.), some log only a few.

User info:  city/state, etc.  Users log anywhere from 1 to thousands of visits, with the distribution skewing right.

Page info: url, content flags, etc.


IO - The database only has 4 users, so will not have a lot of i/o, mostly just queries to populate dataframes in our python data analysis environment.
indexes - none besides the default generated index.  Candidates for indexing are user ID and page view timestamp (potentially a multi column index?)
Options
I welcome any other ideas, but this is what I've come up w/ with some searching.  Interested to hear which steps are worthwhile and which aren't.

right-size the datatype of each field -- does this offer performance boost? most fields are text or boolean flags.

break table into at least 2 others, e.g., visit info and page info.

Keep it in one table and partition it. From what I've read, I think partitioning on the most frequently queried field is the optimal choice.
OPTIMIZE TABLE is almost always not worth doing.

INDEXes are your friend -- they can (in many cases) make queries run orders of magnitude faster.  Provide a Slow query, plus SHOW CREATE TABLE, and we can help you.  Or study my cookbook.  As that says, picking the 'right' index (perhaps a composite index) requires that you first have some clues of the SELECTs you will be doing.

"Rightsizing" datatypes is a good idea, especially when first creating the tables.  Smaller --> more cacheable --> less I/O --> faster.

Two tables (visit info and page info)?  If they are 1:1, usually 1 table is 'right'; if they are 1:many, then two tables is a must.