Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Advantage of BTREE?

I create indexes without the USING BTREE clause. Is there any advantage of using BTREE index?

CREATE INDEX `SomeName` USING BTREE ON `tbl_Name`(`column_name`); 
like image 299
shantanuo Avatar asked Nov 06 '09 14:11

shantanuo


People also ask

What is the advantage and disadvantage of B-tree?

The principal advantage of B+ trees over B trees is they allow you to pack in more pointers to other nodes by removing pointers to data, thus increasing the fanout and potentially decreasing the depth of the tree. The disadvantage is that there are no early outs when you might have found a match in an internal node.

What is the advantage of B-tree over binary search tree?

The major advantage of the B+ tree (and B-trees in general) over binary search trees is that they play well with caches.

What are the advantages and disadvantages of B star trees over binary trees?

B-star trees have better data structure and are faster in search than Binary trees, but its harder to write codes for B-start trees. The major difference between B-tree and binary tres is that B-tree is a external data structure and binary tree is a main memory data structure.


2 Answers

First off, depending on the Storage Engine used, you may just not have a choice (InnoDB for example is exclusively using BTREE for its index).

Also, BTREE is the default index type for most storage engines.

Now... There are cases, when using alternative index types may result in improved performance. There are (relatively rare case) when a HASH index may help. Note that when a HASH index is created, a BTREE index is also produced. That's in part due to the fact that hash indexes can only resolve equality predicates. (a condition such as WHERE Price > 12.0 could not be handled by a hash index).

In short: Keep using BTREE, whether implicitly (if BTREE is the default for the Storage used), or explicitly. Learn about the other types of indexes so that you know about them would the need arise.

Edit: (in searching cases when alternate index types may be used)
Effectively the case is rather straight forward for RTREE indexes. These are only supported, with MySQL, in the context of "SPATIAL" databases, i.e. databases which include Geo position context such as Point and other object in the GIS model).

HASH indexes are more generic (not limited to a particular application or data type), and one can generally follow one's intuitive understanding of hashes to get a hint as to when these may outperform the old-but-faithful BTREE. As indicated earlier, this would imply columns typically searched with an equal predicate. I'm guessing relatively short lookup tables and the like could benefit, depending on the effective implementation within MySQL.

like image 153
mjv Avatar answered Sep 21 '22 16:09

mjv


BTREE is the default index method. You may safely omit it.

like image 34
yk4ever Avatar answered Sep 24 '22 16:09

yk4ever