首页 > 数据库 >mysql索引学习

mysql索引学习

时间:2023-04-23 11:11:07浏览次数:45  
标签:index 查询 学习 索引 mysql using null

概念:是一种高效获取数据的数据结构(有序)

索引结构

二叉树

红黑树

hash

btree,叶子节点存数据,一个页占用数据大,层级结构就多

b+tree,非叶子节点存储数据,mysql做了优化,双向链表

索引分类:

主键索引、唯一索引、常规索引、全文索引

聚集索引、非聚集索引

通过命令查询增删改查执行次数

show global status like 'Com_______'

sql满查询分析

show_query_log=1;

性能分析explain

type、possable_keys key key_len rows ref

extra字段:using index condition 使用了索引,需要回表查询

using where;using index使用了索引,不需要回表查询

索引失效场景:

or:两边字段都是索引才会走索引

like:前模糊不走索引

类型转换不走索引

数据覆盖,mysql优化器会判断哪个效率高,全盘扫描就不走索引

is null和is not null可能会走索引或者不走

sql提示

查询用哪个索引 use index、force index

索引设计原则

1、数据量大频繁建立索引的

2、查询条件操作的字段建立索引

3、区分度高的列建立索引

4、尽量使用联合索引,避免回表

5、要控制索引的数量

6、如果索引列不能存储null值,在建表通过not null约束它。

标签:index,查询,学习,索引,mysql,using,null
From: https://www.cnblogs.com/liubaihui/p/17345905.html

相关文章

  • Hugging Face:机器学习领域的“GitHub”,价值20亿的AI界“笑脸顶流”
    原创|文BFT机器人01生成式AI竞争激烈,“技术寡头”引人忧横空出世的ChatGPT无疑是目前科技界最耀眼的“紫微星”。ChatGPT一经推出,便凭借其秒杀过往聊天机器人的“超级大脑”轰轰烈烈地占据了舆论场,在博得众多人工智能巨头的青睐,成为AI投资新风口的同时;ChatGPT在自然语言处理任......
  • MachineLearningNote (sklearn 学习总结)---引用
    MachineLearningNote(sklearn学习总结)---引用: https://github.com/LeBron-Jian/MachineLearningNotePython机器学习笔记:sklearn库的学习地址:https://www.cnblogs.com/wj-1314/p/10179741.htmlPython机器学习笔记:使用sklearn做特征工程和数据挖掘地址:https://www.cnblog......
  • Mysql中如果建立了索引,索引所占的空间随着数据量增长而变大,这样无论写入还是查询,性能
    索引所占空间的增长确实会对MySQL数据库的写入性能和查询性能造成影响,这主要是由于索引数据过多时会导致磁盘I/O操作变得非常频繁,从而使性能下降。为此,可以采取以下几种方式来减缓这种影响: 1.限制索引的大小:可以考虑为索引指定大小限制,在存储时仅存储指定大小内的数据。例如,在......
  • mysql replace 正则替换
    先说结论:8.0版本之前不支持,只能采用曲线方法,例如:UPDATEtestsettest.data=REPLACE(test.data,SUBSTR(test.data,LOCATE("{",test.data),LOCATE("}",test.data)),"") 8.0之后使用REGEXP_REPLACE函数UPDATEtableNameset`name`=REGEXP_REPLACE(`name`,'......
  • mysql字段过长无法作为约束、索引的解决方案
    背景:对接过程中遇到一个场景 需要用(网页链接+请求id)作为唯一约束,由于url很长,我在一开始就设置为了text字段。ALTERTABLExxx.xxxADDCONSTRAINTxxxUNIQUEKEY(xxxx);在加约束时报错:SQL错误[1170][42000]:BLOB/TEXTcolumn'xxxx'usedinkeyspecificationwith......
  • Effective Modern C++ 学习笔记
    闲话今天是2023年4月23日,俺开始正式学习面试相关内容了。打算先从EffectiveModernC++这本书开始学起,作为日后代码风格、习惯的指导。不过俺没有一起学习的小伙伴,qwq。与ICPC切割之后,内心都轻松了许多。小醉一宿之后还是十分愉悦的。欢迎加入C++学习群:https://j......
  • mysql单表备份部分数据且数据量较大时
    --复制表结构CREATETABLEtableB(LIKEtableA);--插入筛选数据INSERTintotableBSELECT*fromtableAwhereXXX=?;--重命名,替换renametabletableAtotableC;renametabletableBtotableA;--删除旧表DROPTABLEtableC;......
  • MySQL数据类型之字符型
    字符类型类型说明N的含义是否有字符集最大长度char(n)定长字符字符是255varchar(n)变长字符字符是65535binary(n)定长二进制字节字节否255varbinary(n)变长二进制字节字节否65535tinyblob二进制大对象字节否255blob(n)二进制大对象字节否65535mediumblob(n)二进制大对象字节否16Mlo......
  • InnoDB索引页结构
    InnoDB是一个将表中的数据存储到磁盘上的存储引擎,所以即使关机后重启我们的数据还是存在的。而真正处理数据的过程是发生在内存中的,所以需要把磁盘中的数据加载到内存中,如果是处理写入或修改请求的话,还需要把内存中的内容刷新到磁盘上。而我们知道读写磁盘的速度非常慢,和内存读写差......
  • 【MySQL】InnoDB中的GAP锁详解
    测试数据:CREATETABLE`lock_test`(`a`int(11)NOTNULLAUTO_INCREMENT,`b`int(11)NOTNULL,`c`int(11)NOTNULL,`d`int(11)NOTNULL,PRIMARYKEY(`a`),UNIQUEKEY`idx_b`(`b`),KEY`idx_c`(`c`))ENGINE=InnoDBDEFAULTCHARSET=latin1;IN......