> >The thing with Oracle is that once a row is assigned a ROWID, it
never
> >changes.  It doesn't matter if the row grows and has to move within
the
> >block (or if it has to move to another block, for that matter).
That's
> >why ROWIDs work in Oracle.
> >
> 
> Neither does an auto_increment index value that you put in the table
> yourself.  I'm still waiting to hear a proponent of _rowid tell me why
> _rowid is _better_ for _database_admins_ than using an auto_increment
> column value.  The '_rowid takes no space' argument is hogwash; its
> stored by Oracle in space that MySQL doesn't allocate internally, so
its
> still taking up a few bytes per row of memory, like it or not.

The ROWID isn't stored by Oracle (except in your indexes).  The ROWID is
the *physical address* of the row (datafile + block # + offset in the
block).  It's "stored" in the same space that MySQL would allocate for
it's addresses.  And I'm not saying that the ROWID is of any value to
admins, because it really doesn't make a difference to an admin.  It's
useful for developers, perhaps.

In Oracle, because the ROWID is the actual physical address of the row,
it provides O(1) access to a row, as opposed to O(log(n)) that an index
provides.  That's a pretty good benefit if you ask me.  There's also no
overhead required when inserting new rows if you're using the ROWID as
your key, because there's no maintenance of an index required by the DB.
Of course, neither of those things is the case with MySQL's _rowid type,
so like I said, the only benefit for MySQL is in migration from
Oracle...

Oh, one more point, I'm not advocating the use of ROWID in Oracle
either.  Generally, an index *is* fast enough, and since about Oracle 8i
(or maybe it was 9i...), the format of the ROWID changed, because they
upped the limit on the number of datafiles, and hence had to increase
the size of the ROWID.  The old ROWID type is still there, but you just
can't use it if you've got more than 1022 datafiles. 

Dean.




---------------------------------------------------------------------
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