>
>Does your master table have a list of table names and the table's
>characteristics? How is the search called?
currently i have a master table called "files", the primary key is id and
the data tables are called filedata1 filedata2, etc.
where 1 and 2 correspond to the file id. Each of the filedata tables
contains all the content to dynamically create a new file based on a linked
template.
file
id = 1, name="greenville", contact="bob", template=3, defdirectory =
"soccer/" etc...
filedata1
id = 29, type=1, data1="April 3, we won 6-4 against the bedford bears",
data2=null, data3=null
id=34, type=1, data1="Welcome to the greenville soccer team web page",
data2=null, data3=null
when the type=4 it looks for the text in the TextData file. However, when
there is much less text, it is stored in the filedata file itself in the
data1 column. data1 also contains the text that will be used in the alt tag
for images(type=2), and the "link's tags" for links (type=3), etc.
currently i am searching the TextData table using:
$sql = "SELECT files.location, files.filename, TextData.*,
MATCH(TextData.text) AGAINST ('$searchFor') AS score ";
$sql .="FROM TextData, files WHERE MATCH(TextData.text) AGAINST
('$searchFor') AND files.id = TextData.fid";
1) i want to be able to merge the FileDataX tables like this- only this
doesn't work: error near (SELECT CONCAT...
$sql = "CREATE TEMPORARY TABLE searchtable (id int, type tinyint, data1
varchar(255), data2 int, data3 int) TYPE=MERGE UNION=(SELECT
CONCAT('filedata',id) FROM files WHERE defdirectory LIKE '$defdirectory%'")
INSERT_METHOD=LAST";
and then perform my full text search on data1 where type=1?
<snip: jay>
>Seems like you would have to call multiple queries no matter what, unless
>you creat one large merged table for your several thousand small tables. Is
>this normalization gone overboard? Do all of the tables match in
>configuration (same # of columns, same datatype per column, etc.)?
</snip>
actaully - i thought about one BIG table, or even medium sized tables
however the primary use of the tables is to build one file from one
filedata table, with the future ability for files to reference each other,
to share data. to simplify the process, the editor reads in the entire
table, presents the old data, and then on update, it deletes the entire
table, and inserts the new data. otherwise, i would have to look for data
that was removed, create an array of deleted rows, and then run the delete
query, which actually takes lot more time than delete * from filedataX.
There are several other factors that caused me to go the route of several
filedata tables for each file.
i will also say - my normalization isn't as smart as i'd have liked, and
i'm thinking that i may move ALL the text into the textdata table, which is
3 columns
fid = files.id INT
line = filedatax.id INT
text = "whatever text" TEXT
but i have an index on my text column (required for the fulltext seach) and
am concerned that if it's tooo big, it'll be a very slow search! as well as
slowing down my editor too much, if got it down to about 20:1 small text :
large text.
ken
---------------------------------------------------------------------
Before posting, please check:
http://www.mysql.com/manual.php (the manual)
http://lists.mysql.com/ (the list archive)
To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php