mysql索引笔记 sql与索引的关系优化

每张表,在执行sql的时候同时只用一个索引,所以尽量使用多条件复合索引

索引不要建太多

索引会减慢增删改的速度

----------------------华丽丽的分割线----------------------------------------------------------------

索引采用   最左前缀匹配原则
mysql  会一直从左向右匹配索引  知道范围查询为止
索引(a,b,c)
a=1  可用索引
b=2  用不到索引(就是说以a打头的索引,如果条件没有a,就用不了,后面的也用不了)
a=1 and b>2 and c=3 用到索引中的(a,b) c没用到,因为到b就是范围查询了,(a,b,c)中b之后的索引c 因为b是范围查询而终止
b=2 and a=3 and c>3 都用到了,因为c才是范围查询  (a,b,c)中  c是最后一个,没有后面的索引,所以不会再影响后面

自己的总结:要查询的时候,用到的条件一定要有索引中的第一个   比如上面的  a  一定要在查询条件中,并且会用到范围查询的条件要尽量放到最后

----------------------华丽丽的分割线------------------------------------------------------------------------

尽量选择区分度高的列作为索引
比如 id 每条数据都不一样,这是最好的索引
但性别  可以说是50%的数据都一样,这种索引的效果不大,和没有没什么区别
最适合做索引的字段     这一字段如果   数值平均在0.1以下,也就是说    比如:类型字段   超过10个类型以上,并且数据量平均,则适合做索引

----------------------华丽丽的分割线-------------------------------------------------------------------------

索引类型  Btree   和  md5签名

Btree 各种查询都支持, md5 不支持范围查询

----------------------华丽丽的分割线---------------------------------------------------------------------------------

综合考虑查询和排序

a=1 and b=2 order by c
有利于排序的索引
(a,c)
(b,c)
(a,b,c) mysql有限选择
mysql会自动查询最有利的索引   order by c其实已经是在 a和b索引都执行之后的结果集里面去排序,效率很高

-----------------------华丽丽的分割线------------------------------------------------------------------------------------------

查询索引,尽量保持列干净

to_char(time) = 1 不走索引
time = to_char(1) 走索引

查询条件一定要是纯粹的查询条件,不能添加公式和其他函数  这样才能使用索引

-----------------------华丽丽的分割线-----------------------------------------------------------------------------------------------

尽量使用join去代替多变查询和子查询

在oracle中多表查询和子查询的效率和join差不多
但在mysql中 join的效率比多表查询和子查询迅速的多

-----------------------华丽丽的分割线----------------------------------------------------------------------------------------------------

like % 这种查询,和范围查询是同样的效果
如果这样的字段放到索引的最前面,则后面的条件都不会走了

-----------------------华丽丽的分割线-----------------------------------------------------------------------------------------------------

必要时,符合索引要进行“补洞”
比如(a,b,c)索引
a=1 and c=2 这样的查询是走不了索引的
所以需要补洞
a=1 and b in (0,1) and c=2 进行补洞,这样就可以让查询速度提高



自己的总结,留于记录
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CSDN是一个技术交流平台,里面有许多关于各种编程语言和数据库的学习资料和笔记。而MySQL是其中一种常用的关系型数据库管理系统,也是开放源代码软件之一。 在CSND上,MySQL笔记是指关于MySQL数据库的学习和使用的笔记和教程。这些笔记包含了MySQL数据库的基本概念、安装配置、SQL语句的使用、数据表的设计和管理、索引使用、数据备份和恢复等方面的知识。学习MySQL笔记可以帮助开发者更好地理解和应用MySQL数据库。 MySQL笔记主要可以分为以下几个方面来介绍和学习: 1. 数据库基础知识:学习数据库的基本概念和原理,了解关系型数据库的特点以及MySQL的特点。 2. 安装和配置:学习如何在不同操作系统上安装和配置MySQL数据库,包括设置用户名、密码和端口等。 3. SQL语句的使用:学习SQL语句的基本语法和常用命令,包括查询、插入、更新、删除等操作。 4. 数据表的设计和管理:学习如何设计和创建数据表,包括选择适当的数据类型、设置主键和外键等。 5. 索引的使用:学习如何创建和使用索引来提高查询效率和数据访问速度。 6. 数据备份和恢复:学习如何进行MySQL数据库的数据备份和恢复,包括全量备份和增量备份等。 通过学习MySQL笔记,开发者可以掌握MySQL数据库的基本操作和高级功能,提高数据管理和查询的效率。此外,还可以了解MySQL数据库的优化技巧和性能调优方法,提升数据库的性能和稳定性。 总之,通过CSDN上的MySQL笔记,开发者可以系统地学习和掌握MySQL数据库的相关知识,从而更好地应用于实际的项目开发中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值