Mysql索引,调优

index:索引

数据库的索引是数据库管理系统里面经过 排序的数据结构

索引服务对象是select 查询

更新语句其实是先查出数据,更改数据然后返回磁盘,如果我们对查询做了优化,那么更新,删除,都会变快,它是数据结构,必然占据空间,是一个典型的空间换时间的一个案例

索引的话其实是一个 key value的值,如图:

值的话对应的是一条数据的磁盘地址,然后键的话就对应的是键值

索引的创建方式:

一:SQL语句创建

ALTER TABLE user_innodb ADD INDEX in_name(name)

()中的name其实就是我们的索引要绑定得字段

二:建表的时候再直接把索引给加上,去指定索引

三:用界面话工具去指定索引

索引类型:

一:普通索引

二:唯一索引 +唯一约束

三:主键索引 +非空约束

四:全文索引

特殊的sql

select *from 表名 where match(字段名) against(‘河南牧业经济学院’ IN NATURAL LANGUAGE MODE);

一般我们用 es slor引擎

什么数据结构才能帮助我们快速检索数据呢?

要想用到检索,必须要有序,其实索引用的就是二分折半查找

有一种数据结构就符合这种特点,那就是二叉查找树

二叉查找树左叶子节点小于父节点,右叶子节点大于父节点

如果就是二叉查找树就是一直在一边进行排列,比如斜树,

这样就成了单链表的结构了

那么二叉树将变得毫无意义,所以如何解决呢?

我们用平衡二叉树(Balanced Binary Search Tree)又称AVL树

那么平衡二叉树如何解决这一问题的呢?其实用的就是二叉树左旋还有右旋

一旦发现左左型的数据结构就会右旋

一旦发现右有型的数据结构就会左旋

innob存储引擎一次从磁盘拿16k数据到内存

16K=16384字节 redis就是16384个槽位

用二叉树太浪费空间,所以我们用多叉树,多叉树可以分很多子树

B树(多叉树):通过不断分链来保证这种数据结构

不断在分裂,合并来保证我们的数据存储

Mysql中用到的B树:BTREE

B树结构:

B+树:

第三层是Innodb存储数据

Innodb中不支持哈希索引

博客内容均系原创,未经允许严禁转载!
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇