Question

I have any number of users in a database (this could be 100, 2000, or 3) what i'm doing is using mysql "show tables" and storing the table names in an array, then i'm running a while loop and taking every table name (the user's name) and inserting it into some code, then i'm running said piece of code for every table name. With 3 users, this script takes around 20 seconds. It uses the Twitter API and does some mysql inserts. Is this the most efficient way to do it or not?

Was it helpful?

Solution

Certainly not!

I don't understand why you store each user in their table. You should create a users table and select from there.

It will run in 0.0001 seconds.

Update:

A table has rows and columns. You can store multiple users in rows, and information about each user in columns.

Please try some database design tutorials/books, they wil help you a great deal.

OTHER TIPS

If your worried about storing multiple entries for each user within the same users table, you can have a seperate table for tweets with the tweet_id refering to the user.

I'd certainly go for one users table.

Databases are optimized for processing many rows; some of the techniques used are indexes, physical layout of data on disk and so on. Operations on many tables will be always be slower - this is just not what RDBMS were built to do.

There is one exception - sometimes you optimize databases by sharding (partitioning data), but this approach has as many advantages as disadvantages. One of the disadvantages is that queries like the one you described take a lot of time.

You should put all your users in one table, because, from logical point of view - they represent one entity.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top