日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql索引及sql执行顺序

發布時間:2024/4/15 数据库 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql索引及sql执行顺序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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,10
1.FROM(將最近的兩張表,進行笛卡爾積)---VT1
2.ON(將VT1按照它的條件進行過濾)---VT2
3.LEFT JOIN(保留左表的記錄)---VT3
4.WHERE(過濾VT3中的記錄)--VT4…VTn
5.GROUP BY(對VT4的記錄進行分組)---VT5
6.HAVING(對VT5中的記錄進行過濾)---VT6
7.SELECT(對VT6中的記錄,選取指定的列)--VT7
8.ORDER BY(對VT7的記錄進行排序)--游標
9.LIMIT(對排序之后的值進行分頁)
?WHERE條件執行順序(影響性能)
1.MYSQL:從左往右去執行WHERE條件的。
2.Oracle:從右往左去執行WHERE條件的。
?結論:寫WHERE條件的時候,優先級高的部分要去編寫過濾力度最大的條件語句。

轉載于:https://www.cnblogs.com/song-9527/p/10647998.html

總結

以上是生活随笔為你收集整理的mysql索引及sql执行顺序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。