It actually is a case of premature optimization. The problem is, we're trying to build a site that on it's launch date, might get something in the order of 2M visits a month. And with our (way-too-limited) budget, we have to squeeze as much out of our hardware as possible. So we do try to write the code, from the ground up, in a way that will scale very well.
I would always try an isolate the SQL code into a separate module
So you would create modules like Project::User::SQL, Project::Item::SQL, or just a Project::SQL?
Thanks!
-- zigdon