I haven't used too many of the admin tools (for presicely the reason you describe), but I don't think that splitting up the database into more tables would really help matters. The DB should be able to handle 10,000 rows as easily as 100. Hell, it _should_ be able to handle 10,000,000 rows just as well, but I don't know how well mysql would do at that (though I've read reports that it does hold up pretty well).
What really needs to be done is that the admin tools need to create better queries. Have the admin tool query for spawns only in EC or gfay, etc, and only work with those. Or have it query as needed. For example, get the IDs of all the items (to konw how many there are and what their IDs are) in one query intially, but don't get the full info until it needs to be displayed on the screen. The key is to grab data in short, manageable chunks.
Another approach would be to have a background thread manage all the data retrieval. So when the interface needs data, it sends a request for data to that thread and then goes back to the user. The background thread executes the query against the DB and populates the interface as the data comes back from the DB.
Now maybe some of the tools use approaches like these (or other ideas).
In any case, it's not the amount of data in each table that's the problem. The problem is creating queries that don't take too long to execute (in terms of the database generating the data, the time to transfer the data from the DB to the admin tool (like over a network) and most importantly the time to process the data). Shorter queries and more dynamic loading would probably greatly improve performance.
|