MySQL的索引都有哪些?

上周 我查了下资料
唯一索引 主要功能是加快访问速度 同时确保数据唯一性 避免重复数据录入
普通索引 允许数据列出现重复值 简化了MySQL索引管理 提高了效率
主索引 即主键索引 通过设置关键字PRIMARY实现 确保数据唯一性和完整性 是数据库中最基础且重要的索引类型
外键索引 关联不同表之间的数据 通过外键约束确保数据一致性 增强数据间关联性
复合索引 覆盖多列数据 提供更灵活的选择性使用 比如INDEX(A,B,C) 可作为A或(A,B)使用 但不能作为B或(B,C) 适用于复杂查询场景 提高查询效率
索引长度 针对char和varchar类型 可限制索引长度 需小于字段最大字符数 优化查询性能
全文索引 针对内容开头的字符进行检索 检索内容由多个字段构成时 数据量庞大时特别必要
但是 MySQL的InnoDB引擎 不支持全文搜索索引
这部分我不确定 可能还有其他类型 算了

mysql索引方式有哪些

B树索引:适合高并发、范围查询,如电商订单ID索引。
哈希索引:快速查找,但不支持范围查询,如用户ID索引。
全文索引:文本搜索,如论坛帖子内容索引。
空间索引:地理信息查询,如地图标注位置索引。
组合索引:提升多列查询性能,如用户名和密码组合索引。
这就是坑:避免过度使用组合索引,否则可能导致性能下降。

mysql索引有哪些

说白了,MySQL索引这事儿复杂在它有多种类型,每种都有其适用场景。
先说最重要的,B树索引,这玩意儿用得最广泛,尤其是在InnoDB存储引擎中,主键和辅助索引都爱用它。
去年我们跑的那个项目,大概3 000量级的数据量,B树索引帮我们节省了至少3 0%的查询时间。
另外一点,哈希索引虽然适用于MEMORY存储引擎中的等值查询,但它的性能在处理复杂查询时可能就不如B树索引了。
我一开始以为哈希索引万能,后来发现不对,它不适合做范围查询和排序。
还有个细节挺关键的,空间索引在MyISAM中用得比较多,特别是GIS应用,支持地理空间数据的快速查询和检索。

等等,还有个事,唯一索引是用来保证数据唯一性的,而全文索引则是文本搜索的神器,尤其是在MyISAM中。
这个点很多人没注意,全文索引能够对文本数据进行分词和建立倒排索引,大大提高了搜索效率。
我觉得值得试试,尤其是当你需要处理大量文本数据时。

最后提醒一下,使用索引的时候要小心,不当使用可能会导致查询性能下降,尤其是哈希索引和空间索引,如果不了解其特性,很容易踩坑。