資源描述:
《任務8建立和管理索引》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、任務8建立和管理索引【任務背景】94【任務要求】94【任務分解】948.1認識索引948.1.1索引分類95&1.2索引的設計原則96&2索引的建立968.2.1創(chuàng)建表時創(chuàng)建968.2.2用CREATEINDEX語句創(chuàng)建978.2.3通過ALTERTABLE語句創(chuàng)建索引98&3索引的查看99&4索引的刪除1008.4.1用DROPINDEX語句刪除索引1008.4.2用ALTERTABLE語句刪除100【項目實踐】101【習題】101【任務背景】由于數(shù)據(jù)庫在執(zhí)行一條Sql語句的時候,默認的方式是根據(jù)搜索條件進行全表掃描,遇到匹配條件的就加入搜索結(jié)果集合。在進
2、行涉及多個表聯(lián)接,包括了許多搜索條件(比如人小比較、Like匹配等),而且表數(shù)據(jù)量特別大的查詢時,在沒有索引的情況下,MySQL需要執(zhí)行的掃描行數(shù)會很大,速度也會很慢?!救蝿找蟆勘救蝿諏恼J識索引、索引的分類以及索引的設計原則等方面著手,介紹創(chuàng)建和管理索引的方法。特別要注意的是,索引并不是很多越好,要正確認識索引的重要性和設計原則,創(chuàng)建合適的索引。【任務分解】&1認識索引索引是一種特殊的數(shù)據(jù)庫結(jié)構(gòu),可以用來快速杏詢數(shù)據(jù)庫表屮的特定記錄。MySQL屮,所有的數(shù)據(jù)類型都可以被索引。MySQL支持的索引主要有Hash索引和B-Tree索引。目前大部分MySQL索
3、引都是以B-樹(BTREE)方式存儲的,是MySQL數(shù)據(jù)庫中使用最為頻繁的索引類型,除了Archive存儲引擎之外的其他所有的存儲引擎都支持B-Tree索引。不僅在MySQL中是如此,在其他的很多數(shù)據(jù)庫管理系統(tǒng)中B-Tree索引也同樣是作為最主要的索引類型的,這主要是因為B-Tree索引的存儲結(jié)構(gòu)在數(shù)據(jù)庫的數(shù)據(jù)檢索中有著非常優(yōu)界的表現(xiàn)。-?般來說,MySQL中的B-Tree索引的物理文件大多是以BalanceTree的結(jié)構(gòu)來存儲的,也就是所有實際需要的數(shù)據(jù)都存放于Tree的LeafNode,而且到任何一個LeafNode的最短路徑的長度都是完全相同的,所以把
4、它稱之為B-Tree索引。MySQLHash索引相對于B-Tree索引,檢索效率要高上不少。雖然Hash索引效率高,但是Hash索引本身由于其特殊性也帶來了很多限制和弊端,主要有以卜?這些。(1)MySQLHash索引僅僅能滿足和〃<二〉〃查詢,不能使用范圍查詢。(2)MySQI,Hash索引無法被用來避免數(shù)據(jù)的排序操作。(3)MySQLHash索引不能利用部分索引鍵查詢。(4)MySQLHash索引在任何時候都不能避免表掃描。(5)MySQLHash索引遇到人量Hash值相等的情況示性能并不一定就會比B-Tree索引高?!痉治雠c討論】(1)MY1SAM里所
5、有鍵的長度僅支持1000字節(jié),1NNODB是767。(2)blob和text字段僅支持前綴索引。(3)使用!=以及?的吋候,MySQL不使用索引。(4)當在字段使用函數(shù)的時候,MySQL無法使用索引;在join時條件字段類型不一致的時候,MySQL無法使用索引;在組合索引里使用非第一個索引時也不使用索引。(5)在使用like的時候,以%開頭,即〃%***〃的時候無法使用索引;在使用or的時候,要求or前后字段都有索引。(6)索引是一個簡單的表,MySQL將一個表的索引都保存在同一個索引文件屮,所以索引也是要占用物理空間的。如果有大量的索引,索引文件可能會比數(shù)
6、據(jù)文件更快地達到最大的文件尺寸。(7)在更新表中索引列上的數(shù)據(jù)時,MySQL會自動地更新索引,索引樹總是和表的內(nèi)容保持一致。這可能需要重新組織一個索引,如來表中的索引很多,這是很浪費時間的。也就是說,這樣就降低了添加、刪除、修改和其他寫入操作的效率。表中的索引越多,則更新表的時間就越長。(8)如果從表屮刪除了列,則索引可能會受到彩響。如果所刪除的列為索引的組成部分,則該列也會從索引中刪除。如果組成索引的所有列都被刪除,則整個索引將被刪除。8.1.1索引分類MySQL的索引包括普通索引(TXDEX)、唯一性索引(UNIQUE)、主鍵(PRIMARYKEY).全
7、文索引(FULLTEXT)和空間索引(SPATIAL)。(1)普通索引(INDEX)索引的關(guān)鍵字是INDEX,這是最基本的索引,它沒有任何限制。(2)唯一性索引(UNIQUE)關(guān)鍵字是UNIQUEo與普通索引類似,但是UNIQUE索引列的值必須唯一,允許有空值。如果是組合索引,則列值的組合必須唯一。在一個表上可以創(chuàng)建多個UNIQUE索引。(3)主鍵索引(PRIMARYKEY)它是一種特殊的唯一索引,不允許有空值。一般是在建表的時候同時創(chuàng)建主鍵索引。也可通過修改表的方法增加主鍵,但一個表只能冇一個主鍵索引。(1)全文索引(FULLTEXT)FULLTEXT索引
8、只能對CHAR,VARCHAR和TEXT列編制索引,