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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql数据库索引页号为什么从3开始_MySQL数据库快问快答

發(fā)布時(shí)間:2023/12/1 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql数据库索引页号为什么从3开始_MySQL数据库快问快答 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

原標(biāo)題:MySQL數(shù)據(jù)庫快問快答

前言

今天樓主給大家列一下關(guān)于數(shù)據(jù)庫幾個(gè)常見問題的要點(diǎn),如果大家對(duì)其中的問題感興趣,可以自行擴(kuò)展研究。

1. UNION ALL 與 UNION 的區(qū)別

UNION和UNION ALL關(guān)鍵字都是將兩個(gè)結(jié)果集合并為一個(gè)。

UNION在進(jìn)行表鏈接后會(huì)篩選掉重復(fù)的記錄,所以在表鏈接后會(huì)對(duì)所產(chǎn)生的結(jié)果集進(jìn)行排序運(yùn)算,刪除重復(fù)的記錄再返回結(jié)果。

而UNION ALL只是簡(jiǎn)單的將兩個(gè)結(jié)果合并后就返回。

由于UNION需要排序去重,所以 UNION ALL 的效率比 UNION 好很多。

2. TRUNCATE 與 DELETE 區(qū)別

TRUNCATE 是DDL語句,而 DELETE 是DML語句。

TRUNCATE 是先把整張表drop調(diào),然后重建該表。而 DELETE 是一行一行的刪除,所以 TRUNCATE 的速度肯定比 DELETE 速度快。

TRUNCATE 不可以回滾,DELETE 可以。

TRUNCATE 執(zhí)行結(jié)果只是返回0 rows affected,可以解釋為沒有返回結(jié)果。

TRUNCATE 會(huì)重置水平線(自增長(zhǎng)列起始位),DELETE 不會(huì)。

TRUNCATE 只能清理整張表,DELETE 可以按照條件刪除。

一般情景下,TRUNCATE性能比DELETE好一點(diǎn)。

3. TIMESTAMP 與 DATETIME 的區(qū)別

相同點(diǎn)

TIMESTAMP 列的顯示格式與 DATETIME 列相同。顯示列寬固定在19字符,并且格式為YYYY-MM-DD HH:MM:SS。

不同點(diǎn)

TIMESTAMP

4個(gè)字節(jié)存儲(chǔ),時(shí)間范圍:1970-01-01 08:00:01~2038-01-19 11:14:07。

值以UTC格式保存,涉及時(shí)區(qū)轉(zhuǎn)化,存儲(chǔ)時(shí)對(duì)當(dāng)前的時(shí)區(qū)進(jìn)行轉(zhuǎn)換,檢索時(shí)再轉(zhuǎn)換回當(dāng)前的時(shí)區(qū)。

DATETIME

8個(gè)字節(jié)存儲(chǔ),時(shí)間范圍:1000-10-01 00:00:00~9999-12-31 23:59:59。

實(shí)際格式存儲(chǔ),與時(shí)區(qū)無關(guān)。

4. 什么是聯(lián)合索引

兩個(gè)或更多個(gè)列上的索引被稱作聯(lián)合索引,聯(lián)合索引又叫復(fù)合索引。

5. 為什么要使用聯(lián)合索引

減少開銷: 建一個(gè) 聯(lián)合索引( col1,col2,col3),實(shí)際相當(dāng)于建了(col1),(col1,col2),(col1,col2,col3)三個(gè)索引。減少磁盤空間的開銷。

覆蓋索引: 對(duì)聯(lián)合索引(col1,col2,col3),如果有如下的sql: select col1,col2,col3 from test where col1=1 and col2=2。那么MySQL可以直接通過遍歷索引取得數(shù)據(jù),而無需回表,這減少了很多的隨機(jī)io操作。覆蓋索引是主要的提升性能的優(yōu)化手段之一。

效率高: 索引列越多,通過索引篩選出的數(shù)據(jù)越少。有1000W條數(shù)據(jù)的表,有如下sql select from table where col1=1 and col2=2 and col3=3 ,假設(shè)假設(shè)每個(gè)條件可以篩選出10%的數(shù)據(jù),如果只有單值索引,那么通過該索引能篩選出 1000W * 10%=100w 條數(shù)據(jù),然后再回表從100w條數(shù)據(jù)中找到符合 col2=2 and col3= 3 的數(shù)據(jù),然后再排序,再分頁;如果是聯(lián)合索引,通過索引篩選出 1000w * 10% * 10% * 10%=1w ,效率得到明顯提升。

6. MySQL 聯(lián)合索引最左匹配原則

在 MySQL 建立聯(lián)合索引時(shí)會(huì)遵循最左前綴匹配的原則,即最左優(yōu)先,在檢索數(shù)據(jù)時(shí)從聯(lián)合索引的最左邊開始匹配。

MySQL 會(huì)一直向右匹配直到遇到范圍查詢(>、 3 and d = 4 如果建立(a,b,c,d)順序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引則都可以用到,a,b,d的順序可以任意調(diào)整。

7. 什么是聚集和非聚集索引

聚集索引就是以主鍵創(chuàng)建的索引。

非聚集索引就是以非主鍵創(chuàng)建的索引。

8. 什么是覆蓋索引

覆蓋索引(covering index)指一個(gè)查詢語句的執(zhí)行只用從索引頁中就能夠取得(如果不是聚集索引,葉子節(jié)點(diǎn)存儲(chǔ)的是主鍵+列值,最終還是要回表,也就是要通過主鍵再查找一次),避免了查到索引后,再做回表操作,減少I/O提高效率。

可以結(jié)合第10個(gè)問題更容易理解。

9. 什么是前綴索引

前綴索引就是對(duì)文本的前幾個(gè)字符(具體是幾個(gè)字符在創(chuàng)建索引時(shí)指定)創(chuàng)建索引,這樣創(chuàng)建起來的索引更小。但是MySQL不能在ORDER BY或GROUP BY中使用前綴索引,也不能把它們用作覆蓋索引。

創(chuàng)建前綴索引的語法:

ALTERTABLEtable_name ADD

KEY(column_name(prefix_length))

10. InnoDB 與 MyISAM 索引存儲(chǔ)結(jié)構(gòu)的區(qū)別

MyISAM索引文件和數(shù)據(jù)文件是分離的,索引文件僅保存數(shù)據(jù)記錄的地址。

而在InnoDB中,表數(shù)據(jù)文件本身就是按B+Tree組織的一個(gè)索引結(jié)構(gòu),這棵樹的葉節(jié)點(diǎn)data域保存了完整的數(shù)據(jù)記錄。這個(gè)索引的key是數(shù)據(jù)表的主鍵,因此InnoDB表數(shù)據(jù)文件本身就是主索引,所以必須有主鍵,如果沒有顯示定義,自動(dòng)為生成一個(gè)隱含字段作為主鍵,這個(gè)字段長(zhǎng)度為6個(gè)字節(jié),類型為長(zhǎng)整型。

InnoDB的輔助索引(Secondary Index,也就是非主鍵索引)存儲(chǔ)的只是主鍵列和索引列,如果主鍵定義的比較大,其他索引也將很大。

MyISAM引擎使用B+Tree作為索引結(jié)構(gòu),索引文件葉節(jié)點(diǎn)的data域存放的是數(shù)據(jù)記錄的地址,指向數(shù)據(jù)文件中對(duì)應(yīng)的值,每個(gè)節(jié)點(diǎn)只有該索引列的值。

MyISAM主索引和輔助索引(Secondary key)在結(jié)構(gòu)上沒有任何區(qū)別,只是主索引要求key是唯一的,輔助索引可以重復(fù),(由于MyISAM輔助索引在葉子節(jié)點(diǎn)上存儲(chǔ)的是數(shù)據(jù)記錄的地址,和主鍵索引一樣,所以不需要再遍歷一次主鍵索引)。

簡(jiǎn)單的說:

主索引的區(qū)別: InnoDB的數(shù)據(jù)文件本身就是索引文件。而MyISAM的索引和數(shù)據(jù)是分開的。

輔助索引的區(qū)別: InnoDB的輔助索引data域存儲(chǔ)相應(yīng)記錄主鍵的值而不是地址。而MyISAM的輔助索引和主索引沒有多大區(qū)別。

11. 為什么盡量選擇單調(diào)遞增數(shù)值類型的主鍵

InnoDB中數(shù)據(jù)記錄本身被存于主索引(B+樹)的葉子節(jié)點(diǎn)上。這就要求同一個(gè)葉子節(jié)點(diǎn)內(nèi)(大小為一個(gè)內(nèi)存頁或磁盤頁)的各條數(shù)據(jù)記錄按主鍵順序存放,因此每當(dāng)有一條新的記錄插入時(shí),MySQL會(huì)根據(jù)其主鍵將其插入適當(dāng)?shù)慕Y(jié)點(diǎn)和位置,如果頁面達(dá)到裝載因子(InnoDB默認(rèn)為15/16),則開辟一個(gè)新的頁。

如果使用自增主鍵,那么每次插入新的記錄,記錄就會(huì)順序添加到當(dāng)前索引結(jié)點(diǎn)的后續(xù)位置,當(dāng)一頁寫滿,就會(huì)自動(dòng)開辟一個(gè)新的頁,這樣就會(huì)形成一個(gè)緊湊的索引結(jié)構(gòu),近似順序填滿。由于每次插入時(shí)也不需要移動(dòng)已有數(shù)據(jù),因此效率很高,也不會(huì)增加很多開銷在維護(hù)索引上。

如果使用非自增主鍵,由于每次插入主鍵的值近似于隨機(jī),因此每次新紀(jì)錄都要被插入到現(xiàn)有索引頁的中間某個(gè)位置,此時(shí)MySQL不得不為了將新記錄查到合適位置而移動(dòng)元素,甚至目標(biāo)頁可能已經(jīng)被回寫到磁盤上而從緩存中清掉,此時(shí)又要從磁盤上讀回來,這增加了很多開銷,同時(shí)頻繁的移動(dòng)、分頁操作造成了大量的碎片,得到了不夠緊湊的索引結(jié)構(gòu),后續(xù)不得不通過 OPTIMIZE TABLE 來重建表并優(yōu)化填充頁面。

簡(jiǎn)單的說:

索引樹只能定位到某一頁,每一頁內(nèi)的插入還是需要通過比較、移動(dòng)插入的。所以有序主鍵可以提升插入效率。

12. 建表時(shí),int 后面的長(zhǎng)度的意義

int占多少個(gè)字節(jié),已經(jīng)是固定的了,長(zhǎng)度代表了顯示的最大寬度。如果不夠會(huì)用0在左邊填充,但必須搭配zerofill使用。也就是說,int的長(zhǎng)度并不影響數(shù)據(jù)的存儲(chǔ)精度,長(zhǎng)度只和顯示有關(guān)。

13. SHOW INDEX 結(jié)果字段代表什么意思

Table:

表名。

Non_unique:

0:該索引不含重復(fù)值。

1:該索引可含有重復(fù)值。

Key_name:

索引名稱,如果是注解索引,名稱總是為PRIMARY。

Seq_in_index:

該列在索引中的序號(hào),從 1 開始。例如:存在聯(lián)合索引 idx_a_b_c (a,b,c),則a的Seq_in_index=1,b=2,c=3。

Column_name:

列名。

Collation:

索引的排列順序:A(ascending),D (descending),NULL (not sorted)。

Cardinality:

一個(gè)衡量該索引的唯一程度的值,可以使用ANALYZE TABLE(INNODB) 或者 myisamchk -a(MyISAM)更新該值。

如果表記錄太少,該字段的意義不大。一般情況下,該值越大,索引效率越高。

Sub_part:

對(duì)于前綴索引,用于索引的字符個(gè)數(shù)。如果整個(gè)字段都加上了索引,則顯示為NULL。

Null:

YES:該列允許NULL值。

'':該列不允許NULL值。

Index_type:

索引類型,包括(BTREE, FULLTEXT, HASH, RTREE)。

如何解決like'%字符串%'時(shí)索引失效?

LIKE問題:like 以通配符開頭 ('%abc…'),mysql索引失效會(huì)變成全表掃描的操作。

罪魁禍?zhǔn)资?,不是LIKE,LIKE 條件是 type = range 級(jí)別

%xxx%:全表掃描

%xxx:全表掃描

xxx%:range

解決辦法:

使用覆蓋索引,可以由 ALL 變?yōu)镮NDEX,為啥呢?覆蓋索引之后就能使用使用索引進(jìn)行全表掃描。這里要注意一下,使用符合索引的時(shí)候,命中一個(gè)字段就可以,不用全部命中。

15. MySQL高效分頁

當(dāng)然想要實(shí)現(xiàn)上述效果的前提是:返回搜狐,查看更多

id是唯一索引,而且單調(diào)遞增。

N 的值是上一次查詢的記錄的最后一條id,(需要前端保存一下,不能直接用傳統(tǒng)的方法獲得)

不支持跨頁查詢,只能按照第1,2,3,4頁這樣查詢逐頁查詢。

責(zé)任編輯:

總結(jié)

以上是生活随笔為你收集整理的mysql数据库索引页号为什么从3开始_MySQL数据库快问快答的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 粉嫩av一区二区 | 国产成年无码久久久久毛片 | 精品国精品国产自在久不卡 | 亚洲精品久久久久av无码 | 国产精品ⅴa有声小说 | 一女三黑人理论片在线 | 四虎精品成人免费网站 | 不卡免费av | 99国产视频 | 温柔女教师在线观看 | 亚洲视频图片小说 | 亚洲黄色成人 | 国产搞逼视频 | 国产女主播一区二区三区 | 亚洲福利社 | 国产无遮挡又黄又爽 | 美女扒开下面让男人捅 | 夜夜躁狠狠躁日日躁av | 日本bdsm视频 | 极品人妻一区二区 | 国产成人一区在线观看 | 成人久久一区二区 | 免费黄色网址在线 | 亚洲av色一区二区三区精品 | 成人福利在线视频 | 久久精品偷拍视频 | 欧美日韩一区电影 | 修女也疯狂3免费观看完整版 | 人人爱超碰 | 自拍视频在线 | 国产91精品一区二区 | 亚洲熟妇无码爱v在线观看 九色福利 | 97麻豆视频 | 国产精品久久国产精品99 | 欧美在线视频一区二区 | 亚洲色图日韩 | 久久久久久国产精品三级玉女聊斋 | 日韩一级黄色录像 | 亚洲国产精品自拍 | 欧美亚洲三级 | 日本在线| www.色网站 | 久久一热 | 修女也疯狂3免费观看完整版 | 毛片黄片免费看 | wwwxx欧美 | 免费网站观看www在线观 | 催眠调教后宫乱淫校园 | 亚洲美女色视频 | 国产人人射 | www.日本高清 | 亚洲AV成人无码精品久久盆瓶 | 男生插女生视频在线观看 | 五号特工组之偷天换月 | 好爽…又高潮了毛片免费看 | 人人爽人人爽人人爽人人爽 | 伊人久久一区二区三区 | 欧美高大丰满少妇xxxx | 欧美黄色一级大片 | 三年中文在线观看免费观看 | 日韩1区2区3区| 亚洲电影一区二区 | 国产精品美女久久 | 男女搞网站 | 欧美不卡影院 | 国产成人无码一区二区在线播放 | 日本三级视频在线 | 小罗莉极品一线天在线 | 日韩中文字幕亚洲 | 久久99精品久久久久久噜噜 | 欧美精品色视频 | 噜噜噜av| av少妇 | 超碰一区二区三区 | 高清日韩一区二区 | 麻豆va| 欧美一级淫片免费视频黄 | 欧美性xxxx图片 | 帮我拍拍漫画全集免费观看 | 成人免费看片' | 五月天啪啪 | 国产欧美一区二区三区在线老狼 | 香港日本韩国三级网站 | 男女男精品视频站 | 玩弄少妇人妻 | 中文字幕在线观看高清 | 大又大又粗又硬又爽少妇毛片 | 久久精品9 | 青青草视频在线观看 | 亚洲一区精品视频 | 欧美视频一二三区 | 欧美日本免费 | 亚洲天堂社区 | 国产av天堂无码一区二区三区 | 伊人网在线视频 | 国产高潮又爽又无遮挡又免费 | 欧美一区二不卡视频 | 亚洲综合免费观看高清完整版 | 欧美成人免费高清视频 |