Do this to prevent duplication on those three columns in the future: ALTER TABLE url_visit DROP KEY `url_scheme_ID`, add UNIQUE KEY (url_scheme_ID, url_server_ID, url_path_id);
The way I have composed that key (table-column order), it will force you to include the url_scheme_ID if you want to use the index to find url_server_id and url_path_id. Maybe a better Idea is to organize that new key so that the columns are listed in their order of prevalence in your queries, if you search by url_sever_ID most often, list it first. If url_scheme_ID is not something you "need" as often put it last. That changes the statement to look like: ALTER TABLE url_visit DROP KEY `url_scheme_ID`, add UNIQUE KEY (url_server_ID, url_path_ID, url_scheme_ID); This way you can search on {url_server_ID}, {url_server_ID, url_path_ID}, or (url_server_ID, url_path_ID, url_scheme_ID} and MySQL will still use the index. Because it's designated as UNIQUE key, there will always be at most 1 record with any combination of those three values. Yours, Shawn Green Database Administrator Unimin Corporation - Spruce Pine "J S" <[EMAIL PROTECTED] To: [EMAIL PROTECTED] com> cc: [EMAIL PROTECTED] Fax to: 06/23/2004 10:38 Subject: Re: load data into 2 tables and set id AM Sorry! I'm not that experienced with databases as you probably realised! url_visit | CREATE TABLE `url_visit` ( `urlid` mediumint(9) NOT NULL auto_increment, `url_scheme_ID` int(11) NOT NULL default '0', `url_server_ID` int(11) NOT NULL default '0', `url_path_ID` int(11) NOT NULL default '0', `query` text, `category` varchar(50) default NULL, PRIMARY KEY (`urlid`), KEY `url_scheme_ID` (`url_scheme_ID`,`url_server_ID`,`url_path_ID`) ) TYPE=MyISAM > >I can't tell from a DESCRIBE output. Please post the results of SHOW >CREATE TABLE url_visit; > >Thanks! >Shawn Green >Database Administrator >Unimin Corporation - Spruce Pine > > > > "J S" > <[EMAIL PROTECTED] To: [EMAIL PROTECTED] > com> cc: >[EMAIL PROTECTED] > Fax to: > 06/23/2004 09:57 Subject: Re: load data >into 2 tables and set id > AM > > > > > > >Hi Shawn, > >Here's the url_Schemes table (it's the same as the url_paths and >url_servers). This means url_scheme_ID is part of a unique constraint/key ? > >mysql> desc url_schemes; >+--------+-------------+------+-----+---------+----------------+ >| Field | Type | Null | Key | Default | Extra | >+--------+-------------+------+-----+---------+----------------+ >| ID | int(11) | | MUL | NULL | auto_increment | >| scheme | varchar(20) | | PRI | | | >+--------+-------------+------+-----+---------+----------------+ >2 rows in set (0.00 sec) > >mysql> desc url_visit; >+---------------+--------------+------+-----+---------+----------------+ >| Field | Type | Null | Key | Default | Extra | >+---------------+--------------+------+-----+---------+----------------+ >| urlid | mediumint(9) | | PRI | NULL | auto_increment | >| url_scheme_ID | int(11) | | MUL | 0 | | >| url_server_ID | int(11) | | | 0 | | >| url_path_ID | int(11) | | | 0 | | >| query | text | YES | | NULL | | >| category | varchar(50) | YES | | NULL | | >+---------------+--------------+------+-----+---------+----------------+ >6 rows in set (0.00 sec) > >mysql> select * from url_schemes; >+----+--------+ >| ID | scheme | >+----+--------+ >| 1 | http | >| 2 | tcp | >| 3 | - | >| 4 | ftp | >| 5 | https | >+----+--------+ >5 rows in set (0.00 sec) > > > >------ previous responses clipped for space --------- > > > _________________________________________________________________ It's fast, it's easy and it's free. Get MSN Messenger today! http://www.msn.co.uk/messenger -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]