mysql 字段索引的問(wèn)題
問(wèn)題描述
在sf看到篇文章里面有這么一段關(guān)于數(shù)據(jù)表索引的
KEY `idx_status_date` (`status`,`date`)
我想問(wèn)下 上面的寫法 和下面的寫法 有什么區(qū)別么?
KEY `status` (`status`),KEY `date` (`date`)
問(wèn)題解答
回答1:一個(gè)是組合索引 一個(gè)單個(gè)字段建立索引 建議你搜索下 組合索引和單個(gè)索引類似的文章,主要這個(gè)問(wèn)題解釋起來(lái)文字太多,你自己去看下網(wǎng)上資料!
回答2:組合索引跟單字段索引有很大不同 , 組合索引有順序的組合索引對(duì)于搜索條件為
status = 0 AND date= 'XXXX'或者status = 0這兩種情況都有效
但是對(duì)于date='XXX'的話就沒(méi)什么用了而且組合索引只能有一個(gè)范圍搜索,這個(gè)如果要說(shuō)起碼要很長(zhǎng), 抽空看看'高性能MySQL'吧 , 里面有介紹
回答3:KEY idx_status_date (status,date)組合索引能說(shuō)為組合,當(dāng)然是組合使用的使用才能最大生效第一,組合索引必定有順序之分就像上面那個(gè),status和date作為組合索引在where status = ’1’ and date = ’2017-01-01’的時(shí)候,組合索引就會(huì)生效。但假如你的搜索條件中,date在status前面,那么索引只會(huì)生效一部分因?yàn)閙ysql檢測(cè)到status作為索引,但無(wú)法使用date索引
而單個(gè)索引就更好理解只有你搜索字段哪個(gè)建立索引,哪個(gè)生效
你可以使用explian 看mysql語(yǔ)句索引使用情況
相關(guān)文章:
1. docker images顯示的鏡像過(guò)多,狗眼被亮瞎了,怎么辦?2. python的前景到底有大?如果不考慮數(shù)據(jù)挖掘,機(jī)器學(xué)習(xí)這塊?3. Matlab和Python編程相似嗎,有兩種都學(xué)過(guò)的人可以說(shuō)說(shuō)嗎4. javascript - Html5做移到端定位,獲取授權(quán)拒絕了怎么辦?5. javascript - 關(guān)于audio標(biāo)簽暫停的問(wèn)題6. 大家好,請(qǐng)問(wèn)在python腳本中怎么用virtualenv激活指定的環(huán)境?7. 網(wǎng)頁(yè)爬蟲 - 用Python3的requests庫(kù)模擬登陸B(tài)ilibili總是提示驗(yàn)證碼錯(cuò)誤怎么辦?8. javascript - 微信小程序封裝定位問(wèn)題(封裝異步并可能多次請(qǐng)求)9. javascript - Web微信聊天輸入框解決方案10. 請(qǐng)教各位大佬,瀏覽器點(diǎn) 提交實(shí)例為什么沒(méi)有反應(yīng)
