我创建没有"USING BTREE"子句的索引.使用BTREE索引有什么好处吗?
CREATE INDEX `SomeName` USING BTREE ON `tbl_Name`(`column_name`);
Run Code Online (Sandbox Code Playgroud)
mjv*_*mjv 43
首先,根据所使用的存储引擎,您可能没有选择(例如InnoDB专门使用BTREE作为其索引).
此外,BTREE是大多数存储引擎的默认索引类型.
现在......有些情况下,使用替代索引类型可能会提高性能.当HASH索引可能有帮助时(相对罕见的情况).请注意,创建HASH索引时,还会生成BTREE索引.这部分是由于哈希索引只能解析等式谓词.(诸如WHERE价格> 12.0的条件不能由哈希索引处理).
简而言之:继续使用BTREE,无论是隐式的(如果BTREE是所用存储的默认值),还是显式的.了解其他类型的索引,以便在需要时了解它们.
编辑:(在搜索可能使用备用索引类型
的情况下)有效的情况是RTREE索引相当直接.这些只有MySQL支持在"SPATIAL"数据库的上下文中,即包含Geo位置上下文的数据库,如Point模型中的Point和其他对象.
HASH索引更通用(不限于特定的应用程序或数据类型),并且通常可以遵循一个人对哈希的直观理解,以获得关于何时这些索引可能胜过旧但忠实的BTREE的提示.如前所述,这意味着通常使用相同谓词搜索的列.我猜测相对较短的查找表等可能会受益,具体取决于MySQL中的有效实现.