国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Mysql - Mysql索引常見問題匯總

Mysql索引常見問題匯總

2021-02-22 16:24最好是風梳煙沐 Mysql

這篇文章主要介紹了Mysql索引常見問題匯總,幫助大家更好的理解和使用MySQL數據庫,感興趣的朋友可以了解下

Q1:數據庫有哪些索引?優缺點是什么?

1.B樹索引:大多數數據庫采用的索引(innoDB采用的是b+樹)。能夠加快訪問數據的速度,尤其是范圍數據的查找非常快。缺點是只能從索引的最左列開始查找,也不能跳過索引中的列,如果查詢中有某個列用到了范圍查詢,則右邊所有列都無法使用索引優化查找。

2.哈希索引:基于哈希表實現。在MySQL中,只有Memory引擎顯式的支持哈希搜索。哈希查找的速度非常快,但哈希索引只包含哈希值和行指針,不存儲字段值,所以不能用索引中的值來避免讀取行,也不能進行排序。由于哈希索引使用的是索引列的全部內容來計算哈希值的,所以不支持部分所有列匹配查找。哈希只支持等值比較,不支持任何范圍查詢。一旦哈希沖突很多的話,維護成本非常高。innoDB支持“自適應哈希索引”(adaptive hash index)。

3.全文索引:全文索引是一種特殊類型的索引,它查找的是文本中的關鍵字,而不是比較索引的值。最初只能在MyISAM上使用,5.6.24以后innoDB也支持了全文索引。全文索引的查詢要使用Match....against,在相同的列上同時創建全文搜索和基于值的B-Tree索引不會有沖突。

4.空間數據索引(R-tree索引),MyISAM支持R樹索引,好處是無需前綴查詢,會從所有緯度來索引數據,可以用作地理數據的存儲;缺點是必須使用MySQL的GIS相關函數如MBRCONTAINS( )等來維護數據,但由于MySQL中的GIS并不完善,因此大多數人不會使用這個特性。

Q2:為什么不實用二叉查找樹或者紅黑樹作為數據庫索引。

二叉樹在處理海量數據時,樹的高度太高,雖然索引效率很高,達到logN,但會進行大量磁盤io,得不償失。而且刪除或者插入數據可能導致數據結構改變變成鏈表,需要增進平衡算法。而紅黑樹,插入刪除元素的時候會進行頻繁的變色和旋轉(左旋,右旋),很浪費時間。但是當數據量很小的時候,完全可以放入紅黑樹中,此時紅黑樹的時間復雜性比b樹低。因此,綜上考慮,數據庫最后選擇了b樹作為索引。

Q3:B tree和B+ tree應用場景:

1.B樹常用于文件系統,和少部分數據庫索引,比如mongoDB。

2.B+樹主要用于mysql數據庫索引。

Q4:B+ tree對比B tree的優點

B樹的每個節點除了存儲指向 子節點的索引外,還要存儲data域,因此單一節點指向子節點的索引并不是很多,樹的高度較高,磁盤io次數較多。B+樹的高度更低,且所有data都存儲在葉子節點,葉子節點都處于同一層,因此查詢性能穩定,便于范圍查找。

Q5:多列排序時使用索引的坑

A key_part specification can end with ASC or DESC. These keywords are permitted for future extensions for specifying ascending or descending index value storage. Currently, they are parsed but ignored; index values are always stored in ascending order.

根據Mysql文檔的說明,創建索引的時候,可以加上asc或者desc,例如:add index idx(a asc,b desc).但是實際Mysql是會忽略的(好坑。。。)好像8.0版本之后支持desc了。

這會有什么影響呢?

假如有列test1和test2,都是int類型。

我們創建索引``idx1(test1,test2),
假如我們要按test1和test2排序,例如SQL

?
1
explain select * from table order by test1 ,test2 limit 1;

可以使用索引的排序:

  • order by test1
  • order by test1 desc
  • order by test1,test2
  • order by test1 desc,test2 desc

不可以使用索引的排序:

  • order by test1,test2,desc
  • order by test1 desc,test2

因為索引不支持desc,所以多列的索引是按全部列的升序存儲的。所以只排序一列,全部列升序,全部列降序,都能用索引。但是第一列用升序,第二列用降序,或者第一列降序,第二列用升級,都不能使用索引。

以上就是Mysql索引常見問題匯總的詳細內容,更多關于MySQL 索引的資料請關注服務器之家其它相關文章!

原文鏈接:https://www.cnblogs.com/CNty/p/10960803.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲免费在线观看 | 国产精品一区二区av | 永久黄网站色视频免费观看w | 国产精品久久久久久久 | 成人午夜视频在线 | 亚洲视频 欧美视频 | 日韩免费高清视频 | 国产一区二区三区视频 | 欧美一级一 | 亚洲在线播放 | 综合久久综合 | 大尺度av在线 | 国产精品美女久久久久久免费 | 日本一区二区在线免费 | 国产精品美女久久久久久不卡 | 天天干天天看天天操 | 成人激情在线观看 | 日韩电影一区二区在线观看 | 亚洲一区成人在线观看 | 久久影视精品 | 成人h动漫精品一区二区樱花 | 国产精品久久久久久久久免费桃花 | 亚洲成人精选 | 久久亚洲精品综合 | 久久久中文字幕 | 99伊人| 曰本人一级毛片免费完整视频 | 91精品国产综合久久香蕉 | 亚洲的天堂 | 久久成人精品视频 | 自拍偷拍色 | 欧美在线亚洲 | 婷婷亚洲五月 | 91cn在线观看 | 国产免费av网站 | 夜夜av | 91精品国产综合久久香蕉922 | 国产一区二区精品在线观看 | 91免费在线| 欧美一级片在线观看 | 自拍偷拍欧美 |