在mysql表中设置索引列是否可以确保O(1)查找?

在mysql表中设置索引列是否可以确保O(1)查找?,mysql,time-complexity,Mysql,Time Complexity,所以,当一列上有一个索引,并且您从表中执行一个简单的SELECT*,其中index_column=value,这是一个O(1)搜索吗?索引的内容是整数还是字符串重要吗?MySQL的MyISAM或InnoDB存储引擎中的任何查找都不是O(1)搜索。这些存储引擎使用B+树来实现索引。他们所能做的最好的是O(log2n)搜索 默认情况下,内存存储引擎使用哈希索引类型以及B+树索引类型。只有哈希索引才能实现O(1)查找 在这两种情况下,索引列的数据类型都不会改变这一点 有关MySQL索引的更多信息,请阅

所以,当一列上有一个索引,并且您从表中执行一个简单的SELECT*,其中index_column=value,这是一个O(1)搜索吗?索引的内容是整数还是字符串重要吗?

MySQL的MyISAM或InnoDB存储引擎中的任何查找都不是O(1)搜索。这些存储引擎使用B+树来实现索引。他们所能做的最好的是O(log2n)搜索

默认情况下,
内存
存储引擎使用哈希索引类型以及B+树索引类型。只有哈希索引才能实现O(1)查找

在这两种情况下,索引列的数据类型都不会改变这一点

有关MySQL索引的更多信息,请阅读它没有

MySQL的使用如本文所述。它们的复杂性取决于每个节点的密钥数量,因此可以比O(log2n)做得更好


MySQL使用的每个节点的键数取决于本文中指出的不同因素。

根本的问题是:什么使索引查找成为一个O(1)操作?这取决于索引存储的内部实现,我想……MySQL使用的是B树而不是二叉树。它的复杂性取决于每个节点的条目数。关于MySQL,这是描述的