The range access method uses an index to read a subset of rows
that form one or multiple continuous index value intervals. The
intervals are defined by the query's range predicates, which are
comparisons using any of =, <=>, IN(), IS NULL, IS NOT
NULL, >, <, >=, <=, BETWEEN, !=, <> or
LIKE.
Some examples:
SELECT * FROM blog WHERE author_id IN (1, 7, 8, 10) SELECT * FROM
orders WHERE value > 1000
You know that the range access method is used
when EXPLAIN shows type=range.
Naturally, there has to be an index on the column used by the
range predicate. Since indexes are ordered, MySQL will, for each
interval, dive down the index using the interval start value and
read it's way through the index leaves until it reaches the
interval end value:
…
Aug
23
2011
Jul
29
2010
At Kscope this year, I attended a half day in-depth session entitled Data Warehousing Performance Best Practices, given by Maria Colgan of Oracle. My impression, which was confirmed by folks in the Oracle world, is that she knows her way around the Oracle optimizer.
See part 1 for the introduction and talking about
power and hardware. This part will go over the 2nd “P”,
partitioning. Learning about Oracle’s partitioning has gotten me
more interested in how MySQL’s partitioning works, and I do hope
that MySQL partitioning will develop to the level that Oracle
partitioning does, because Oracle’s partitioning looks very nice
(then again, that’s why it costs so much I guess).
Partition – …
[Read more]