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

Reply via email to