Your best bet is optimizing everything as best you can. Making it so it looks "per channel" as opposed to "global" would vastly improve the script. Yes, this will generate some extra baggage, but it will go much quicker.
Yup, smaller tables would make it slightly faster, but the same person with differnt IP's might not visit the same rooms. For example Person X might visit local rooms which at home, but when they travel and get online from some 2-star motel with each door painted a different color, they will be on a different IP and might just join the local rooms where the fleabag roach-infested motel is. Thus, the out-of-town IP's the person uses wouldn't be captured for their name.