mysql 索引 与执行顺序_mysql索引及sql执行顺序
发布日期:2021-06-24 13:24:08 浏览次数:2 分类:技术文章

本文共 1032 字,大约阅读时间需要 3 分钟。

1, 红黑树 同一层级的黑树到根结点经历的黑树数目一样 最坏情况的时间复杂度 lg n 是二叉树

b树 结点可以有多个孩子 b+树 父节点不存储数据

聚集索引)的叶子节点会存储数据行,也就是说数据和索引是在一起 非聚集索引存储的是数据行的指针

2,InnoDB存储引擎支持两种常见的索引。

一种是B+树,一种是哈希。

所有记录的节点都在叶节点中,并且是顺序存放的

所有记录节点都是按照键值的大小顺序存放在同一层的叶节点中,各个叶子节点通过指针进行连接。由于一个节点中存放了多条的数据,那么检索的时候,进行的磁盘IO次数将会少掉很多

3,like ‘abc%‘会去索引中找 ‘%abc‘不会

复合索引 使用第一部分才会使用索引

索引单独使用,否则不使用索引 or and

索引缺点 占空间 增加删除耗时

频繁更新的不适合索引 sex值类型少不适合,

4,InnoDB存储引擎的逻辑存储结构和 Oracle大致相同 ,所有数据都被逻辑地存放在一个空间中 ,我们称之为表空间 ( tablespace ) 。表空间又由段 ( segment ) 、区 ( extent ) 、页 ( page ) 组成 。页在一些文档中有时也称为块(block)

?执行顺序 示例SQL: SELECT * FROM user LEFT JOIN order ON user.id = order.uid WHERE order.price > 1000 GROUP BY user.name HAVING count(1) > 5 ORDER BY user.name LIMIT 0,101.FROM(将最近的两张表,进行笛卡尔积)---VT12.ON(将VT1按照它的条件进行过滤)---VT23.LEFT JOIN(保留左表的记录)---VT34.WHERE(过滤VT3中的记录)--VT4…VTn5.GROUP BY(对VT4的记录进行分组)---VT56.HAVING(对VT5中的记录进行过滤)---VT67.SELECT(对VT6中的记录,选取指定的列)--VT78.ORDER BY(对VT7的记录进行排序)--游标9.LIMIT(对排序之后的值进行分页)?WHERE条件执行顺序(影响性能)1.MYSQL:从左往右去执行WHERE条件的。2.Oracle:从右往左去执行WHERE条件的。?结论:写WHERE条件的时候,优先级高的部分要去编写过滤力度最大的条件语句。

转载地址:https://blog.csdn.net/weixin_33137081/article/details/114336683 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:java int型数据为空_java – 检查一个int变量是null还是从数据库中为空
下一篇:mysql mariadb并存_【MariaDB】安装MariaDB,与MySQL并存

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年03月30日 08时10分57秒