Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
Author |
Topic |
shauneee
Starting Member
3 Posts |
Posted - 2009-04-08 : 07:07:02
|
I have recently started in a web development company which specialises in holding data on many publications. As part of this data is a reqirement to store every word in a publication and it's location (a word map). These publications can be added and uploaded by our clients.Currently the desigin is to have a separate table containing the word map for each publication. i.e. the tables look something like this where the text <PUBID> is the publicaiton id from the publicaiotns table:CREATE TABLE [dbo].[tblWordLocations_<PUBID>]( [lPageFileId] [int] NULL, [lLeft] [int] NULL, [lTop] [int] NULL, [lBottom] [int] NULL, [lRight] [int] NULL, [zWord] [varchar](100) COLLATE Latin1_General_CI_AS NULL, [zLinkType] [varchar](50) COLLATE Latin1_General_CI_AS NULL, [lCharPos] [int] NULL) This produces many tables of the same structure and as the table name is different for each publication, the only way in interact with them is to use ugly dynamic sql in the stored procedures.I am assuming they have desigined it this way to make it scaleable, however would not a single table with a clustered index containing pub_Id not do just as good a job?If not where would the extra overhead come from and what are the pros and cons of each approach?N.B. The data is only ever accessed for one publication at a time and there are no cross publication searches on the word map data.Any advice would be greatly appreciated. |
|
shauneee
Starting Member
3 Posts |
Posted - 2009-04-08 : 07:13:43
|
Sorry forgot to say:This is currently on SQL2000 and is being moved to SQL 2005. |
|
|
robvolk
Most Valuable Yak
15732 Posts |
Posted - 2009-04-08 : 07:53:49
|
Based on your description it would be better to add PubID as a column and store it all in a single table. The overhead would likely decrease, since data is stored as 8K pages, each table will likely waste a portion of a page and this waste would add up with multiple tables.And even though you don't need to support cross publication searches, putting it in one table will make it very easy to provide. |
|
|
shauneee
Starting Member
3 Posts |
Posted - 2009-04-08 : 09:22:01
|
Thanks for the advice.I've also done a bit of research and, as we are moving to SQL2005, if the table grows too large we can use table partitioning to manage the large dataset without any code changes anyway. |
|
|
|
|
|
|
|