In the last episode (Jun 21), Bill Ferrett said: > I would like to have a MySql table where each row has a unique id > (using auto-increment) but is clustered, i.e. physically stored, in a > different sequence, e.g. name. This is so that an sql query to order > by namew will be quicker. > > I don't want the auto-increment id to be duplicated - I believe this > happens when the auto_increment column is not the first column - so a > multi-column index of name,id seems to be out.
Your choice of primary key has no bearing at all on where mysql decides to store a row in MyISAM tables. It has a slight bearing on BDB and InnoDB tables, since they are really index-organized tables. You'll get clustering but not sequential order through the entire table. You can guarantee uniqueness of the auto_increment column by creating another unique index (not primary, just unique) on the id column. So basically, do this: CREATE TABLE mytable ( id INTEGER AUTO_INCREMENT, name VARCHAR(20), {other fields} PRIMARY KEY (name, id), UNIQUE INDEX (id) ) TYPE={InnoDB/BDB}; and you're set. -- Dan Nelson [EMAIL PROTECTED] --------------------------------------------------------------------- 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