Mysql多表聯合索引:
創新互聯公司長期為近1000家客戶提供的網站建設服務,團隊從業經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯網生態環境。為新泰企業提供專業的網站建設、成都網站設計,新泰網站改版等技術服務。擁有十年豐富建站經驗和眾多成功案例,為您定制開發。
1、多表聯合索引在查詢語句中能加速查詢速度。select * from table1,table2 where table1.id = table2.id。
2、多表聯合的索引的sql語法,一個user表有4個字段 id name age sex,分別給name age sex建立三個單獨的索引,此時建立create index name_age_sex on user(name,age,sex)這個新建立的索引跟前面那三個是獨立的。就是說又新建立了空間存儲這個新索引。
3、索引的維護主要包括定期清理數據碎片。
聯合索引是由多個字段組成的索引。CREATE
[UNIQUE|FULLTEXT|SPATIAL]
INDEX
index_name[USING
index_type]ON
tbl_name
(index_col_name,...)index_col_name:col_name[(length)]
[ASC
|
DESC]如果你經常要用到多個字段的多條件查詢,可以考慮建立聯合索引,一般是除第一個字段外的其它字段不經常用于條件篩選情況,比如說a,b
兩個字段,如果你經常用a條件或者a+b條件去查詢,而很少單獨用b條件查詢,那么可以建立a,b的聯合索引。
CREATE TABLE `test` ('aaa' varchar(16) NOT NULL default '', 'bbb' varchar(16) NOT NULL default '', 'ccc' int(11) UNSIGNED NOT NULL default 0, KEY `sindex` (`aaa`,`bbb`,`ccc`) ) ENGINE=MyISAM COMMENT='';
這樣就在 aaa、bbb、ccc 3列上建立聯合索引了。
如果表已經建好了,那么就在phpmyadmin里面執行:
alert table test add INDEX `sindex` (`aaa`,`bbb`,`ccc`)
就可以在這3列上建立聯合索引了。
你有索引index1(a,b,c),這是是聯合索引,也叫復合索引、多列索引;
你有索引index2(a),index3(b),index4(c),然后你的sql中有and、or或union之類的條件對三個索引分別進行條件掃描,然后將各自的結果進行合并,這叫索引合并,這時你用explain查看執行計劃會看到有“index merge”字樣。
至于兩者有沒有關系,這怎么講呢,一般來說,聯合索引(復合索引)的效率要比索引合并要高,在能使用聯合索引時盡量使用聯合索引,當然這要根據具體情況,sql中寸在“or”這樣的連接詞時,那就可能必須要使用索引合并了。
引入一個面試問題:
看完以下以后再回顧,會發現迎刃而解
Mysql 可以為每一張表設置 存儲引擎 這里我們只說 InnoDB 存儲引擎.
由于實際情況,數據頁只能按照一棵 B+樹 進行排序, 因此每張表只能擁有一個 聚集索引(即 主鍵)。
栗子:
每個葉子節點的索引行中包含了一個書簽(bookmark). 該書簽是用來告訴 InnoDB存儲引擎哪里可以找到該索引對應的數據行或者說 行數據! 由于InnoDB存儲引擎表, 是按照主鍵來構建的, 所以 ,該書簽內其實包含或者說指向了 數據行所對應的聚集索引鍵
也就是說 輔助索引的 葉結點保存了 指向對應數據的 聚集索引, 可以通過該聚集索引 找到對應的數據行
輔助索引的存在并不影響數據在聚集索引中的組織,因為每張表上可以有多個輔助索引。
當通過輔助索引來尋找數據時,InnoDB 存儲引擎會遍歷輔助索引并通過葉級別的指針獲得指向主鍵索引(聚集索引)的主鍵,然后再通過聚集索引找到一個完整的數據行。
例如:
聚集索引輔助索引關系:
: 又叫做組合索引 , 輔助索引的一種 , 和普通創建索引的方式一樣,不同的是 可以同時添加多列來作為索引項;
從本質上來說,聯合索引也是一課B+樹
個人理解: 所謂最左原則, 是因為 存儲引擎構建組合索引時 是根據最左邊的那一列索引項進行排序的 ,所以使用組合索引,必須滿足 條件中必須存在 最左邊那一列的索引項,這樣 才可以找到對應的索引,繼而 去尋找對應的數據
: 又叫做 索引覆蓋,InnoDB中支持覆蓋索引,即 從輔助索引中就可以得到查詢的記錄,而不需要查詢聚集索引中的記錄。
比如 這里沒有根據最左原則使用組合索引,但是 優化器依然進行選擇
共勉,歡迎指導謝謝~
當字段類型是varchar或char時,添加索引,在查詢條件中使用大于小于,索引無效
當字段類型為數字類型時,添加索引,在查詢條件中使用大于小于,索引有效
字段索引如下圖
mysql
高清播放機,圖片大全,點擊查看詳情!
精選推薦
?廣告
?
當前標題:mysql怎么聯合索引 mysql聯合索引和單個索引
當前鏈接:http://m.newbst.com/article2/doojiic.html
成都網站建設公司_創新互聯,為您提供App設計、域名注冊、定制網站、營銷型網站建設、網站設計、網站收錄
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯