John
Thanks for your patience while I build a better picture. My comments are
based on my best understanding:
< You have a single database (.mdb file), located on a LAN server.
< That database has three "location" tables.
be using the application simultaneously, you don't need to worry about the
following -- conversely, if more than one tech simultaneously "hits" your db
over the network, you WILL end up with a corrupted database, sooner or
later.use
{A search through the .tablesdbdesign newsgroup, or at Google.com on
"corruption" will reveal that unsplit dbs, and multiple users "sharing" a
single front-end are common causes, along with "noisy" NICs and LAN
cabling.}
< You haven't mentioned the volume of data entry yet ... but if you only
have three techs doing it, and they work sometime in addition to data entry,
my guess would be your db is having less than 10,000 records a year added.
Unless each of your rows is very large (you haven't provided information
about what data is stored in the tables), this wouldn't add more than 10
Mbytes per year. For Access, this is not unreasonable. If your numbers are
appreciably larger than this (5-10 times larger), you may need to consider a
more robust back-end -- of which SQL Server is one example.
< I don't recall if you mentioned how many fields in any single table could
hold your searched criterion, but your use of the square brackets around
[Author] implies that there's only one field in each table. Again, I don't
have a complete picture, so the following alternate design is for
illustration purposes only:
tlkpLocation {holds your locations, currently three, who knows how many
later?)
LocationID (primary key, needs to be unique, now and in the future -
Autonumber?)
LocationName
... (any other facts about a location)
tblWhateverYouAreStoringThatYourEmailWasAbout
tblWhateverID (primary key, ?Autonumber)
LocationID (foreign key, from tlkpLocation) - which Location is this
record for?
Author (?AuthorID, foreign key, from tblAuthor?)
... (any other facts about WhateverYouAre...)
(!LocationID in tblWhateverYou... comes to mind)
are joining, then go to the Relationships window and create those
relationships, enforcing referential integrity (don't bother setting
cascading updates or deletes at this point). This will create (internal)
indices on those fields as well. If you do this between tlkpLocation and
tblWhatever..., you DON'T need to set an index in tblWhatever... on the
LocationID field -- Access already has, and a duplicate index only wastes
space.
Since you have already, earlier in this thread, come up with a UNION query
than can "collect" all three tables' data together, it would be trivial to
build a make-table query, based on the UNION query, and use that new query
to build a test table. Go into design mode on the test table and set your
indices, re-define field types, etc.
Re-create your original (on a single table) query on this test table and see
if there's a performance issue.
Again, thanks for your patience, and good luck!
Jeff Boyce
<Access MVP>