I should have asked initially, but where do you see a deficiency with the current indexing? I mean, the PKs shouldn't matter as much as the FKs - or what IDs tie the whole thing together. The database does show it's age, with no constraints and dead data (that many have offered to clean up).
The npc_types table is laid out exactly as you described, with Zone 1 mobs being numbered 1000-1999, zone 2 being 2000-2999, etc. You can't really bind many of the other tables to "zones" unless the range is increased (I guess), because there could be more spawn groups, spawns, loot drops etc.
I doubt SQL cares what your PK is, but I believe our shared memory modules do. If you read in IDs 1-100,000, it takes up 'x' amount of memory. If you start making up new IDs and now have to read in ID 1-1,000,000, that's a helluva lot more memory (if we pad that empty space, which I think we do from an earlier discussion).
Anyway, always a good idea to have a solid database. I guess I forgive 'eq' because it is so old, before MySQL became a real database solution
