位置: 编程技术 - 正文

mysql索引学习教程(mysql索引基础)

编辑:rootadmin

推荐整理分享mysql索引学习教程(mysql索引基础),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql 索引技巧,mysql索引规则详解,mysql索引实战,mysql 索引使用技巧及注意事项,mysql索引的使用和原理,mysql索引规则详解,mysql索引规则详解,mysql索引的使用和原理,内容如对您有帮助,希望把文章链接给更多的朋友!

在mysql 中,索引可以分为两种类型 hash索引和 btree索引。

什么情况下可以用到B树索引?

1.全值匹配索引

比如:

orderID="”

2.匹配最左前缀索引查询

比如:在userid 和 date字段上创建联合索引。那么如果输入 userId作为条件,那么这个userid可以使用到索引,如果直接输入 date作为条件,那么将不能使用到索引。

3.匹配列前缀查询

比如: order_sn like ‘%' 这样可以使用到索引。

4.匹配范围值查询

createTime>'--' and createTime<'--'

5.精确匹配左前列并范围匹配另外一列

比如:

userId=1 and createTime>'-9-'

6.只访问索引的查询,称为覆盖索引,及索引包括查询列的数据。

BTREE索引的限制

1.如果不是按照索引的最左列开始查找,则无法使用索引。

比如创建联合索引:

orderId ,createTime 字段创建联合索引,如果只是输入 createTIme的条件,没有orderid的条件,那么将不能使用此索引。

2.使用索引时不能跳过索引的列。

三列:

日期,姓名,电话 组成列和索引,如果查询时 只输入 日期 和电话,那么只能使用日期作为索引进行过滤。

3.NOT IN 和 <> 操作无法使用索引。

4.如果查询中有某个列的范围查询,则其右边所有列都无法使用索引。

hash 索引的特点

hash索引是基于hash表实现的,只有查询条件精确匹配hash 索引中的所有列时,才能使用hash索引。只能是等值查询。

mysql索引学习教程(mysql索引基础)

对于hash索引中的所有列,存储引擎都会为每一行计算一个hash码,hash索引中存储的就是hash码。

限制:

1.必须两次读取,先读取hash 找到对应的行,再读取对应的行数据。

2.hash索引无法用于排序。

3.只支持精确查找,不支持部分索引查找,也不支持范围查找。

hash冲突:

hash 索引不能使用于选择性很差的字段,而要用在比如 选择性强的列上创建hash索引。

比如:不要在性别字段上创建hash索引。

为什么要使用索引?

1.索引大大减少存储引擎需要扫描的数据量。索引小于数据大小。

2.索引可以帮助我们进行排序以避免使用临时表。索引是有顺序的。

3.索引可以把随机的I/0 变为 顺序的IO

索引是不是越多越好?

1.索引会增加写操作的成本

2.太多的索引会增加查询优化器和选择时间。

建立索引的策略

1.索引列上不能使用表达式或函数

比如:select * from product where to_days(out_date) ?to_days(current_date)<=,out_date为索引列。

改成:

select* from product where out_date<date_add(current_date,interval day)

2.索引大小不能超过一定值。inodb 索引列 大小为 个长度。

3.前缀和索引列的选择性。

create index idx_NAME on table (account);

4.联合索引

如何选择索引列的顺序。

1.经常会被索引的列。

2.选择性高的里的列的优先。

3.对小的列创建索引。

MySQL修改默认字符集编码的方法 今天又遇到修改MySQL默认字符集编码的问题,折腾了半天解决了,赶快记录下来,以后就不用每次折腾了。查看MySQL字符集的命令是showvariableslike'%char%';

MySQL中实现插入或更新操作(类似Oracle的merge语句) 如果需要在MySQL中实现记录不存在则insert,不存在则update操作。可以使用以下语句:更新一个字段:INSERTINTOtbl(columnA,columnB,columnC)VALUES(1,2,3)ONDUPLICATEKEYUPDA

mysql5.x升级到mysql5.7后导入之前数据库date出错的快速解决方法 mysql5.x升级至mysql5.7后导入之前数据库date出错的解决方法如下所示:修改mysql5.7的配置文件即可解决,方法如下:linux版:找到mysql的安装路径进入默认的

标签: mysql索引基础

本文链接地址:https://www.jiuchutong.com/biancheng/348596.html 转载请保留说明!

上一篇:MariaDB(MySQL)创建、删除、选择及数据类型使用详解(建立mysql)

下一篇:MySQL修改默认字符集编码的方法(mysql修改默认字符集和校对规则)

  • 广告公司 印刷
  • 股东借款怎么转为利润分配
  • 挂靠企业所得税怎么办?
  • 工企业用地土地使用税怎么征收?
  • 事业单位乱报销出纳怎么办?
  • 自制发票和增值税发票的区别是什么?
  • 季度销售额不超过30万,城建税减免
  • 建筑企业与建设局的关系
  • 合同无效后还能主张违约责任吗
  • 利润表所得税费用计算公式
  • 减免教育费附加和地方教育费附加账务处理
  • 虚开普票是不是很普遍
  • 贷款公司利息收据怎么写
  • 投资活动净现金流为负说明什么
  • 开票金额比收入高怎么办
  • windows11蓝牙不能用
  • 苹果电脑安装了windows能取消吗
  • 去年的季度所得税额怎么做账
  • 计提本月短期借款利息1000元
  • 什么是冻结账户的情形
  • XP系统,右下角本地连接图标消失的解决办法
  • mac os常用快捷键
  • 日志文件的名称和位置是什么
  • schost.exe - schost是什么进程 有什么用
  • 注销公司如何登报
  • 企业出租涉及到的税收
  • php教程 ftp 函数
  • 埃姆雷莫尔
  • 微芯片技术
  • 高德地图api是什么意思
  • vue引入文件路径@的意思
  • php加密zend
  • 调频连续波雷达
  • zero-shot, one-shot和few-shot
  • redux-tookit
  • php多选
  • 社会保险基数怎么办
  • 结转成本相关内容有哪些
  • 设备调试费是什么税
  • 电子承兑汇票贴现怎么操作
  • 公司签发银行承兑汇票的行为属于什么
  • 劳务分包属于人工成本吗
  • 盈余公积转增实收资本会计科目
  • 应收利息缴纳什么税
  • SQL SERVER使用的是( )逻辑模型
  • mysql命令行怎么用
  • 企业年度所得税怎么算
  • 税控盘全额抵扣怎么填申报表
  • 非在职人员和其他人员的区别
  • 车船税缴纳后有发票吗
  • 借款合同的印花税计税依据
  • 通行费的进项抵税怎么算
  • 本年利润在借方表示什么意思
  • 接受政府补助的应纳税所得
  • 债务现金流量是正还是负
  • 绿色安装包怎么卸载
  • macbookpro蓝牙找不到
  • linux编译步骤
  • windowxp系统怎么设置开机密码
  • 查看mac是否是新的
  • hpzts04.exe是什么进程 有什么作用 hpzts04进程查询
  • win10开机cpu占用率100%
  • win10系统ie浏览器版本怎么看
  • bios升级失败后如何恢复
  • 360修复win7
  • win7电脑磁盘突然不见了怎么办
  • unicode 字符百科
  • html中的td
  • eclipse 不同工程中文乱码问题(可对文件以及工程单独设置)
  • 安卓解析工具
  • javax.net.ssl.SSLException: hostname in certificate didn't match:
  • jQuery ajax方法传递中文时出现中文乱码的解决方法
  • android的控件有哪些
  • python中email模块
  • 增值税进项发票勾选时间
  • 税盘注销了怎么申报增值税
  • 党费的缴纳是否扣除所得税
  • 税控发票证书密码是什么
  • 重庆税务查询企业信息查询系统
  • 党建税收宣传
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设