Mysql中的索引分类
1.MySQL索引分为以下几种:
- 1.唯一索引:一般用来保证字段唯一性,一般在主键和外键上应用。
- 2.普通索引:早期的索引,一个表最多可以由32个索引,要求有唯一的索引,可以用来实现数据条件查询,为降低磁盘io操作,最好只在频繁查询的字段上做索引。
- 3.全文索引: MySql提供的全文索引,可以进行全文检索,可以搜索出关联的词,最大的好处在于不受关键字的位置限制。
- 4.空间索引:空间索引主要应用在空间数据检索上,它可以根据空间对象的空间特征(坐标、面积等)计算出一个空间索引号,有助于提高检索速度。
- 5.哈希索引:哈希索引根据哈希函数(Hash Function)的结果计算出一个索引,查询的时候只需要根据索引找到要查询的行,比较适用于无条件查询的情况。
- 6. B树索引: B树索引也称为btree,是一种在大型数据库中非常常见的索引结构,也是MySQL默认的索引类型,它是一颗平衡的树,具有查询效率高的特点,可以查询出数据库中某一部分数据。
2.MySQL索引的创建和使用原则
2.1, 创建索引的原则
- 1、只有非常频繁的用于进行检索和排序操作的字段,才有必要创建索引;
- 2、对于复合索引,应该把最值得检索的字段最先列出来;
- 3、只有唯一性或集合性好的字段可以创建唯一或倒排索引;
- 4、只有检索出来的数据量比较大时才能创建全文索引;
2.2, 使用索引的原则
- 1、避免使用操作符,MySQL会在使用“>”、“<”、“>=”、“<=”等操作符时自动放弃使用索引;
- 2、尽量使用精确查询,MySQL会在使用关键字模糊匹配时自动放弃使用索引;
- 3、避免使用null,MySQL会在字段上有null值时自动放弃使用索引;
- 4、尽量避免在复合索引字段上使用or,应该用union将两个子查询合并;
- 5、当模糊查询结果比较多时,可以使用全文索引进行查询处理;
- 6、不要对已经排序好的结果集使用order by,可在SQL语句末尾加上index_hint来指定索引;
- 7、在多表联合查询时应尽量指定表间的索引关系;
3.MySQL索引没有被使用的情况
- 1, 索引列出现了隐式类型转换,即在where中查询所用的条件和表中字段类型不一致。
- 2, 在条件中使用了函数转换
- 3, where 条件中使用了逻辑判断or,除非or中所有的列都是索引列,否则mysql不会使用索引
- 4, 对于多列索引,若没有使用前导列,则mysql不会使用索引
- 5, 如果mysql解释执行的优化器判断全表扫描比索引快,则mysql不会使用索引
- 6, 如果对索引列字段进行函数,算数运算或者其他表达式等操作,mysql不会使用索引查询
posted @
2023-02-13 12:35
我不知道取什么名字好
阅读(
313)
评论()
编辑
收藏
举报
点击右上角即可分享
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探