我创建索引时没有使用USING BTREE
子句。使用BTREE索引有什么优势吗?
CREATE INDEX `SomeName` USING BTREE ON `tbl_Name`(`column_name`);
我创建索引时没有使用USING BTREE
子句。使用BTREE索引有什么优势吗?
CREATE INDEX `SomeName` USING BTREE ON `tbl_Name`(`column_name`);
首先,根据使用的存储引擎,您可能没有选择(例如,InnoDB专门使用BTREE作为其索引)。
此外,对于大多数存储引擎来说,BTREE是默认的索引类型。
现在...有些情况下,使用替代索引类型可能会提高性能。有时(相对较少的情况下),HASH索引可能有所帮助。请注意,创建HASH索引时,也会生成BTREE索引。这部分是因为哈希索引只能解决等式谓词。 (例如,无法处理WHERE Price>12.0这样的条件)。
简而言之:无论是隐式地(如果BTREE是所用存储的默认值)还是显式地,继续使用BTREE。了解其他类型的索引,以便在需要时了解它们。
编辑:(在搜索可以使用备用索引类型的情况下)
实际上,RTREE索引的情况相当简单。这些仅在MySQL中与"空间"数据库一起使用,即包含Geo位置上下文(如GIS模型中的Point和其他对象)的数据库。
BTREE是默认的索引方法。您可以放心地忽略它。
这取决于你使用的存储引擎。对于大多数情况,默认为BTREE,因此指定它并不会对任何事情产生改变。对于存储引擎如MEMORY/HEAP和NDB,默认使用HASH索引。
更多信息可以在这里找到。
无论是B-tree还是HASH索引从性能角度是否适合您,取决于数据和您如何访问它。如果您知道查询将针对一行或散列的单个行,则HASH索引可能很有用。除此之外,我通常更喜欢BTREE索引,因为数据已排序,因此使范围查询和返回多行的查询更加高效。