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

tip*_*ipu 4 mysql time-complexity

所以当列上有索引,并且你做一个简单的SELECT*FROM表WHERE indexed_column = value时,那是一个O(1)搜索吗?索引的内容是整数还是字符串是否重要?

Bil*_*win 5

MySQL的MyISAM或InnoDB存储引擎中的查找都不是O(1)搜索.那些存储引擎使用B + Trees来实现索引.他们能做的最好的是O(log 2 n)搜索.

MEMORY存储引擎默认使用一个散列索引类型,以及B +树索引类型.只有HASH索引才能实现O(1)查找.

在任何一种情况下,索引列的数据类型都不会改变它.

有关MySQL索引的更多信息,请阅读http://dev.mysql.com/doc/refman/5.1/en/mysql-indexes.html