注意:
索引是在存儲引擎中實(shí)現(xiàn)的,也就是說不同的存儲引擎,會使用不同的索引悍及。MyISAM和InnoDB存儲引擎:只支持BTREE索引,也就是說默認(rèn)使用BTREE接癌,不能夠更換心赶。 MEMORY/HEAP存儲引擎:支持HASH和BTREE索引扔涧。
分類:
索引我們分為四類來講單列索引(普通索引园担,唯一索引,主鍵索引)枯夜、組合索引弯汰、全文索引、空間索引湖雹、
1.1.1咏闪、單列索引:
一個(gè)索引只包含單個(gè)列,但一個(gè)表中可以有多個(gè)單列索引摔吏。 這里不要搞混淆了鸽嫂。
1.1.2、普通索引:MySQL中基本索引類型征讲,沒有什么限制据某,允許在定義索引的列中插入重復(fù)值和空值,純粹為了查詢數(shù)據(jù)更快一點(diǎn)诗箍。
1.1.3癣籽、唯一索引:索引列中的值必須是唯一的,但是允許為空值滤祖,
1.1.4筷狼、主鍵索引:是一種特殊的唯一索引,不允許有空值匠童。(主鍵約束埂材,就是一個(gè)主鍵索引)
1.2、組合索引:在表中的多個(gè)字段組合上創(chuàng)建的索引汤求,只有在查詢條件中使用了這些字段的左邊字段時(shí)俏险,索引才會被使用,使用組合索引時(shí)遵循最左前綴集合首昔。例如寡喝,這里由id、name和age3個(gè)字段構(gòu)成的索引勒奇,索引行中就按id/name/age的順序存放,索引可以索引下面字段組合(id巧骚,name赊颠,age)格二、(id,name)或者(id)竣蹦。如果要查詢的字段不構(gòu)成索引最左面的前綴顶猜,那么就不會是用索引,比如痘括,age或者(name长窄,age)組合就不會使用索引查詢
1.3、全文索引:全文索引纲菌,只有在MyISAM引擎上才能使用挠日,只能在CHAR,VARCHAR,TEXT類型字段上使用全文索引,介紹了要求翰舌,說說什么是全文索引嚣潜,就是在一堆文字中,通過其中的某個(gè)關(guān)鍵字等椅贱,就能找到該字段所屬的記錄行懂算,比如有"你是個(gè)大煞筆,二貨 ..." 通過大煞筆庇麦,可能就可以找到該條記錄计技。這里說的是可能,因?yàn)槿乃饕氖褂蒙婕傲撕芏嗉?xì)節(jié)山橄,我們只需要知道這個(gè)大概意思垮媒。
1.4、空間索引:空間索引是對空間數(shù)據(jù)類型的字段建立的索引驾胆,MySQL中的空間數(shù)據(jù)類型有四種涣澡,GEOMETRY、POINT丧诺、LINESTRING入桂、POLYGON。在創(chuàng)建空間索引時(shí)驳阎,使用SPATIAL關(guān)鍵字抗愁。要求,引擎為MyISAM呵晚,創(chuàng)建空間索引的列蜘腌,必須將其聲明為NOT NULL《叮可能跟游戲開發(fā)有關(guān)撮珠。