mysql索引基本知识(MySql索引使用策略分析)
mysql索引基本知识
MySql索引使用策略分析MySql索引
索引优点
1.可以通过建立唯一索引或者主键索引,保证数据的唯一性.
2.提高检索的数据性能
3.在表连接的连接条件 可以加速表与表直接的相连
4.建立索引,在查询中使用索引 可以提高性能
索引缺点
1.在创建索引和维护索引 会耗费时间,随着数据量的增加而增加
2.索引文件会占用物理空间,除了数据表需要占用物理空间之外,每一个索引还会占用一定的物理空间
3.当对表的数据进行 INSERT,UPDATE,DELETE 的时候,索引也要动态的维护,这样就会降低数据的维护速度,
(建立索引会占用磁盘空间的索引文件。一般情况这个问题不太严重,但如果你在一个大表上创建了多种组合索引,索引文件的会膨胀很快)。
使用索引需要注意的地方
1.在经常需要搜索的列上,可以加快索引的速度
2.主键列上可以确保列的唯一性
3.在表与表的而连接条件上加上索引,可以加快连接查询的速度
4.在经常需要排序(order by),分组(group by)和的distinct 列上加索引 可以加快排序查询的时间, (单独order by 用不了索引,索引考虑加where 或加limit)
5.在一些where 之后的 < <= > >= BETWEEN IN 以及某个情况下的like 建立字段的索引(B-TREE)
6.like语句的 如果你对nickname字段建立了一个索引.当查询的时候的语句是 nickname lick '%ABC%' 那么这个索引讲不会起到作用.而nickname lick 'ABC%' 那么将可以用到索引
7.索引不会包含NULL列,如果列中包含NULL值都将不会被包含在索引中,复合索引中如果有一列含有NULL值那么这个组合索引都将失效,一般需要给默认值0或者 ' '字符串
8.使用短索引,如果你的一个字段是Char(32)或者int(32),在创建索引的时候指定前缀长度 比如前10个字符 (前提是多数值是唯一的..)那么短索引可以提高查询速度,并且可以减少磁盘的空间,也可以减少I/0操作.
9.不要在列上进行运算,这样会使得mysql索引失效,也会进行全表扫描
10.选择越小的数据类型越好,因为通常越小的数据类型通常在磁盘,内存,cpu,缓存中 占用的空间很少,处理起来更快
什么情况下不创建索引
1.查询中很少使用到的列 不应该创建索引,如果建立了索引然而还会降低mysql的性能和增大了空间需求.
2.很少数据的列也不应该建立索引,比如 一个性别字段 0或者1,在查询中,结果集的数据占了表中数据行的比例比较大,mysql需要扫描的行数很多,增加索引,并不能提高效率
3.定义为text和image和bit数据类型的列不应该增加索引,
4.当表的修改(UPDATE,INSERT,DELETE)操作远远大于检索(SELECT)操作时不应该创建索引,这两个操作是互斥的关系
以上就是MySql索引使用策略分析的详细内容,更多关于MySQL 索引的资料请关注开心学习网其它相关文章!
原文链接:https://www.cnblogs.com/CoolYYD/p/13704593.html
- mysql 死锁查询(MySQL slave 延迟一列 外键检查和自增加锁)
- mysql dateformat(MySQL的DATE_FORMAT函数的使用)
- mysqlexplain各个字段作用(MySQL EXPLAIN语句的使用示例)
- MySQL DATE_FORMAT()用法
- mysql缓冲池(详解MySQL中的缓冲池buffer pool)
- mysql查询时间格式化(MySQL时间格式化)
- mysql8.0配置优化参数(MySQL 8.0 新特性之检查约束的实现)
- mysql分页查询有几种(MySQL 查询的排序、分页相关)
- mysql3种日志(mysql中的7种日志小结)
- mysql建表时指定聚簇索引(一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的)
- laravel mysql 操作方式(Laravel使用原生sql语句并调用的方法)
- mysql5.5.36版本介绍(WDCP控制面板升级mysql为5.7.11的方法)
- mysql水平拓展的瓶颈(MySQL令人大跌眼镜的隐式转换)
- phpstudy怎么升级mysql(phpStudy中升级MySQL版本到5.7.17的方法步骤)
- mysql如何修改列的默认值(mysql查询的时候给字段赋默认值操作)
- 查询按照部门分组的mysql语句(Mysql根据某层部门ID查询所有下级多层子部门的示例)
- 如何追女孩子(如何追女孩子的技巧和方法)
- 是不是快乐全被你拿走了(而是你得到的)
- 世界上只有妈妈好(世界上只有妈妈好的歌词)
- 为什么现在社会越来越卷了(现在社会为什么发展那么快呢)
- 直播带货能赚到很多钱吗(直播带货能赚到很多钱吗现在)
- 做网红真的很能赚钱吗(做网红真的很能赚钱吗)
热门推荐
- mysql的日志怎么清除(MySQL删除了记录不生效的原因排查)
- angular模块的组成(详解Angular结构型指令模块和样式)
- laravel新增数据表(laravel实现上传图片的两种方式小结)
- 微信小程序获取手机信息(微信小程序获取手机号的踩坑记录)
- vue 怎么设置滚动条的长度(vue使用better-scroll实现横向滚动的方法实例)
- python去除字符串中间的空格(Python去除字符串前后空格的几种方法)
- docker中运行项目的配置(Docker中搭建配置Git环境的过程)
- jquery中append和appendto的区别
- php代码生成器(PHP迭代器和生成器用法实例分析)
- dockerfile镜像案例(Dockerfile构建自定义镜像的实现)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9